GitHub user vovik0134 added a comment to the discussion: [Ideas] Description of 
backward-incompatible changes between Greenplum 6 and Cloudberry in the 
documentation.

Regarding configuration and resource management, we were able to identify the 
following backward-incompatible changes.

## Changes in configuration and resource management

### Removal of configuration parameters

The following configuration parameters have been completely removed in 
Cloudberry compared to Greenplum 6:

* `wal_keep_segments` — renamed to `wal_keep_size`;
* `memory_spill_ratio`;
* `gp_resource_group_memory_limit`;
* `gp_resource_group_enable_recalculate_query_mem`;
* `gp_resource_group_cpu_ceiling_enforcement`;
* `gp_enable_gpperfmon`;
* `gp_gpperfmon_send_interval`;
* `gpperfmon_log_alert_level`;
* `gpperfmon_port`;
* `gp_log_resqueue_priority_sleep_time`;
* `dev_opt_unsafe_truncate_in_subtransaction`;
* `gp_add_column_inherits_table_setting`;
* `gp_allow_rename_relation_without_lock`;
* `gp_count_host_segments_using_address`;
* `gp_eager_agg_distinct_pruning`;
* `gp_eager_one_phase_agg`;
* `gp_eager_preunique`;
* `gp_enable_exchange_default_partition`;
* `gp_enable_mk_sort`;
* `gp_enable_motion_mk_sort`;
* `gp_enable_sort_distinct`;
* `gp_ignore_window_exclude`;
* `gp_indexcheck_vacuum`;
* `gp_partitioning_dynamic_selection_log`;
* `gp_safefswritesize`;
* `gp_use_synchronize_seqscans_catalog_vacuum_full`;
* `optimizer_analyze_enable_merge_of_leaf_stats`;
* `optimizer_enable_dml_triggers`;
* `optimizer_enable_partial_index`;
* `optimizer_prune_unused_columns`.

**How to detect**

Check the application codebase for uses of the listed configuration parameters.

**How to fix**

Make the corresponding changes in the application codebase by removing the use 
of the deleted configuration parameters.

### Change in possible values of the `password_encryption` parameter

Starting with PostgreSQL kernel version 10, the type of the 
`password_encryption` parameter and the set of possible values have changed.

In Greenplum 6, the parameter has the following type and possible values:

```sql
SELECT vartype, enumvals FROM pg_settings WHERE name = 'password_encryption';
 vartype | enumvals
---------+----------
 bool    |
(1 row)
```

In Cloudberry, the parameter has the following type and possible values:

```sql
SELECT vartype, enumvals FROM pg_settings WHERE name = 'password_encryption';
 vartype |      enumvals
---------+---------------------
 enum    | {md5,scram-sha-256}
(1 row)
```

**How to detect**

Check the application codebase for uses of the `password_encryption` parameter 
and take the changes into account.

**How to fix**

Wherever the `password_encryption` parameter is used, replace the value with 
`md5`. The `scram-sha-256` value is also allowed, but in the current service 
version it is supported with limitations.

The fix can be applied only after the upgrade.

### Changes in default parameter values

In Cloudberry, compared to Greenplum 6, the default values of the following 
parameters have changed:

| Parameter                      | Greenplum 6 | Cloudberry |
|--------------------------------|------------:|-----------:|
| `wal_level`                    | `archive`  | `replica`  |
| `autovacuum_vacuum_cost_delay` | `20ms`     | `2ms`      |
| `checkpoint_completion_target` | 0.5        | 0.9        |
| `extra_float_digits`           | 0          | 1          |
| `gp_interconnect_address_type` | `wildcard` | `unicast`  |
| `autovacuum`                   | `off`      | `on` for `template0` |
| `optimizer_enable_orderedagg`  | `off`      | `on`       |
| `vacuum_cost_page_miss`        | 10         | 2          |

**How to detect**

Most of these parameters are system-level parameters and affect operation only 
indirectly. `extra_float_digits` stands out because it can affect query results.

**How to fix**

In places where the effect of the new `extra_float_digits` value is observed, 
explicitly set `extra_float_digits = 0` at the session or transaction level.

### Possible changes in query execution plans

Cloudberry contains many changes and improvements in the GPORCA optimizer that 
may change the query execution plan. Queries will not “break” logically, but 
they may start executing differently.

Things to consider:

* New parameters affecting query plan construction have appeared:

  * `enable_partitionwise_aggregate`;
  * `enable_partitionwise_join`;
  * `enable_parallel`;
  * `enable_parallel_dedup_semi_join`;
  * `enable_parallel_hash`;
  * `enable_parallel_append`;
  * `enable_parallel_dedup_semi_reverse_join`;
  * `enable_parallel_semi_join`;
  * `jit`;
  * `jit_above_cost`;
  * `jit_dump_bitcode`;
  * `jit_expressions`;
  * `jit_inline_above_cost`;
  * `jit_optimize_above_cost`;
  * `jit_tuple_deforming`.

* GPORCA does not support multi-level partitioned tables.

**How to detect**

Capture baseline plans for critical queries before migrating to Cloudberry:

```sql
EXPLAIN (ANALYZE, VERBOSE, COSTS, BUFFERS) <query>;
```

**How to fix**

Depending on the nature of the plan changes and their criticality, rewrite the 
problematic query or adjust the parameters.

### Extensions merged into the core

In Cloudberry, the following extensions have been removed, and their 
functionality has been moved into the core:

* `gp_parallel_retrieve_cursor`;
* `gp_array_agg`;
* `gp_percentile_agg`.

**How to detect**

Check whether these extensions are installed and whether they are used in your 
codebase:

```sql
SELECT extname, extversion
FROM pg_extension
WHERE extname IN ('gp_parallel_retrieve_cursor', 'gp_array_agg', 
'gp_percentile_agg');
```

**How to fix**

If necessary, adapt the application codebase and scripts to use the built-in 
functionality.

GitHub link: 
https://github.com/apache/cloudberry/discussions/1816#discussioncomment-17260358

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to