Platform and Client Compatibility
Many platforms use the database system. External compatibility of the database system provides a lot of convenience for platforms.
transform_null_equals
Parameter description: Determines whether expressions of the form expr = NULL (or NULL = expr) are treated as expr IS NULL. They return true if expr evaluates to NULL, and false otherwise.
- The correct SQL-standard-compliant behavior of expr = NULL is to always return null (unknown).
- Filtered forms in Microsoft Access generate queries that appear to use expr = NULL to test for null values. If you turn this option on, you can use this interface to access the database.
Type: USERSET
Value range: Boolean
- on indicates expressions of the form expr = NULL (or NULL = expr) are treated as expr IS NULL.
- off indicates expr = NULL always returns NULL.
Default value: off
New users are always confused about the semantics of expressions involving NULL values. Therefore, off is used as the default value.
td_compatible_truncation
Parameter description: Determines whether to enable features compatible with a Teradata database. You can set this parameter to on when connecting to a database compatible with the Teradata database, so that when you perform the INSERT operation, overlong strings are truncated based on the allowed maximum length before being inserted into char- and varchar-type columns in the target table. This ensures all data is inserted into the target table without errors reported.
- The string truncation function cannot be used if the INSERT statement includes a foreign table.
- If inserting multi-byte character data (such as Chinese characters) to database with the character set byte encoding (SQL_ASCII, LATIN1), and the character data crosses the truncation position, the string is truncated based on its bytes instead of characters. Unexpected result will occur in tail after the truncation. If you want correct truncation result, you are advised to adopt encoding set such as UTF8, which has no character data crossing the truncation position.
Type: USERSET
Value range: Boolean
- on indicates overlong strings are truncated.
- off indicates overlong strings are not truncated.
Default value: off
behavior_compat_options
Parameter description: Specifies the database compatibility behavior, which consists of multiple items separated by commas (,).
Type: USERSET
Value range: a string
Default value: In upgrade scenarios, the default value of this parameter is the same as that in the cluster before the upgrade. When a new cluster is installed, the default value of this parameter is check_function_conflicts,check_function_shippable,unsupported_set_function_case to prevent serious issues caused by incorrect function attributes that users define.
- Currently, only items in Table 1 are supported.
- Multiple items are separated by commas (,), for example, set behavior_compat_options='end_month_calculate,display_leading_zero';.
- strict_concat_functions and strict_text_concat_td are mutually exclusive.
- You are not advised to set behavior_compat_options to 'return_null_string' in Oracle compatibility mode. If this option is set, do not insert query results into tables.
Configuration Item |
Behavior |
Applicable Compatibility Mode |
||||
---|---|---|---|---|---|---|
display_leading_zero |
Specifies how floating point numbers are displayed.
|
ORA TD |
||||
end_month_calculate |
Specifies the calculation logic of the add_months function. Assuming that the two parameters of the add_months function are param1 and param2, and the sum of the months of param1 and param2 is result:
|
ORA TD |
||||
compat_analyze_sample |
Specifies the sampling behavior of the ANALYZE operation. If this item is specified, the sample collected by the ANALYZE operation will be limited to around 30,000 records, controlling CN memory consumption and maintaining the stability of ANALYZE. |
ORA TD MySQL |
||||
bind_schema_tablespace |
Binds a schema with the tablespace with the same name. If a tablespace name is the same as sche_name, default_tablespace will also be set to sche_name if search_path is set to sche_name. |
ORA TD MySQL |
||||
bind_procedure_searchpath |
Specifies the search path of the database object for which no schema name is specified. If no schema name is specified for a stored procedure, the search is performed in the schema the stored procedure belongs to. If the stored procedure is not found, the following operations are performed:
|
ORA TD MySQL |
||||
correct_to_number |
Controls the compatibility of the to_number() result. If this item is specified, the result of the to_number() function is the same as that of PG11. Otherwise, the result is the same as that of Oracle. |
ORA |
||||
unbind_divide_bound |
Controls the range check on the result of integer division.
SELECT (-2147483648)::int / (-1)::int; ERROR: integer out of range
SELECT (-2147483648)::int / (-1)::int; ?column? ------------ 2147483648 (1 row) |
ORA TD |
||||
merge_update_multi |
Specifies whether to perform an update when MERGE INTO is executed to match multiple rows. If this item is specified, no error is reported when multiple rows are matched. Otherwise, an error is reported (same as Oracle). |
ORA TD |
||||
disable_row_update_multi |
Specifies whether to perform an update when multiple rows of a row-store table are matched. If this item is specified, an error is reported when multiple rows are matched. Otherwise, multiple rows can be matched and updated by default. |
ORA TD |
||||
return_null_string |
Specifies how to display the empty result (empty string '') of the lpad(), rpad(), repeat(), regexp_split_to_table(), and split_part() functions.
|
ORA |
||||
compat_concat_variadic |
Specifies the compatibility of variadic results of the concat() and concat_ws() functions. If this item is specified and a concat function has a parameter of the variadic type, different result formats in Oracle and Teradata are retained. If this item is not specified and a concat function has a parameter of the variadic type, the result format of Oracle is retained for both Oracle and Teradata. |
ORA TD |
||||
convert_string_digit_to_numeric |
Specifies the type casting priority for binary BOOL operations on the CHAR type and INT type.
CAUTION:
This configuration item is valid only for binary BOOL operation, for example, INT2>TEXT and INT4=BPCHAR. Non-BOOL operation is not affected. This configuration item does not support conversion of UNKNOWN operations such as INT>'1.1'. After this configuration item is enabled, all BOOL operations of the CHAR and INT types are preferentially converted to the NUMERIC type for computation, which affects the computation performance of the database. When the JOIN column is a combination of affected types, the execution plan is affected. |
ORA TD MySQL |
||||
check_function_conflicts |
Controls the check of the custom plpgsql/SQL function attributes.
For example, when this parameter is specified, an error is reported in the following scenarios: CREATE OR replace FUNCTION sql_immutable (INTEGER) RETURNS INTEGER AS 'SELECT a+$1 from shipping_schema.t4 where a=1;' LANGUAGE SQL IMMUTABLE RETURNS NULL ON NULL INPUT; select sql_immutable(1); ERROR: IMMUTABLE function cannot contain SQL statements with relation or Non-IMMUTABLE function. CONTEXT: SQL function "sql_immutable" during startup referenced column: sql_immutable |
ORA TD MySQL |
||||
varray_verification |
Indicates whether to verify the array length and array type length. This parameter is compatible with GaussDB(DWS) of versions earlier than 8.1.0. If this parameter is specified, the array length and array type length are not verified. Scenario 1 CREATE OR REPLACE PROCEDURE varray_verification AS TYPE org_varray_type IS varray(5) OF VARCHAR2(2); v_org_varray org_varray_type; BEGIN v_org_varray(1) := '111'; --If the value exceeds the limit of VARCHAR2(2), the setting will be consistent with that in the historical version and no verification is performed after configuring this option. END; / Scenario 2 CREATE OR REPLACE PROCEDURE varray_verification_i3_1 AS TYPE org_varray_type IS varray(2) OF NUMBER(2); v_org_varray org_varray_type; BEGIN v_org_varray(3) := 1; --If the value exceeds the limit of varray(2) specified for array length, the setting will be consistent with that in the historical version and no verification is performed after configuring this option. END; / |
ORA TD |
||||
strict_concat_functions |
Indicates whether the textanycat() and anytextcat() functions are compatible with the return value if there are null parameters. This parameter and strict_text_concat_td are mutually exclusive. In MySQL-compatible mode, this parameter has no impact.
If this configuration item is not specified, the returned values of the textanycat() and anytextcat() functions are the same as those in the Oracle database. SELECT textanycat('gauss', cast(NULL as BOOLEAN)); textanycat ------------ gauss (1 row) SELECT 'gauss' || cast(NULL as BOOLEAN); -- In this case, the || operator is converted to the textanycat function. ?column? ---------- gauss (1 row) When setting this configuration item, retain the results that are different from those in Oracle and Teradata: SELECT textanycat('gauss', cast(NULL as BOOLEAN)); textanycat ------------ (1 row) SELECT 'gauss' || cast(NULL as BOOLEAN); -- In this case, the || operator is converted to the textanycat function. ?column? ---------- (1 row) |
ORA TD |
||||
strict_text_concat_td |
In Teradata compatible mode, whether the textcat(), textanycat() and anytextcat() functions are compatible with the return value if there are null parameters. This parameter and strict_concat_functions are mutually exclusive.
If this parameter is not specified, the return values of the textcat(), textanycat(), and anytextcat() functions are the same as those in GaussDB(DWS). td_compatibility_db=# SELECT textcat('abc', NULL); textcat --------- abc (1 row) td_compatibility_db=# SELECT 'abc' || NULL; -- In this case, the operator || is converted to the textcat() function. ?column? ---------- abc (1 row) When this parameter is specified, NULL is returned if any of the textcat(), textanycat(), and anytextcat() functions returns a null value. td_compatibility_db=# SELECT textcat('abc', NULL); textcat --------- (1 row) td_compatibility_db=# SELECT 'abc' || NULL; ?column? ---------- (1 row) |
TD |
||||
compat_display_ref_table |
Sets the column display format in the view.
SET behavior_compat_options='compat_display_ref_table'; CREATE OR REPLACE VIEW viewtest2 AS SELECT a.c1, c2, a.c3, 0 AS c4 FROM viewtest_tbl a; SELECT pg_get_viewdef('viewtest2'); pg_get_viewdef ----------------------------------------------------- SELECT a.c1, c2, a.c3, 0 AS c4 FROM viewtest_tbl a; (1 row) |
ORA TD |
||||
para_support_set_func |
Whether the input parameters of the COALESCE(), NVL(), GREATEST(), and LEAST() functions in a column-store table support multiple result set expressions.
|
ORA TD |
||||
disable_select_truncate_parallel |
Controls the DDL lock level such as TRUNCATE in a partitioned table.
|
ORA TD MySQL |
||||
bpchar_text_without_rtrim |
In Teradata-compatible mode, controls the space to be retained on the right during the character conversion from bpchar to text. If the actual length is less than the length specified by bpchar, spaces are added to the value to be compatible with the Teradata style of the bpchar string. Currently, ignoring spaces at the end of a string for comparison is not supported. If the concatenated string contains spaces at the end, the comparison is space-sensitive. The following is an example: td_compatibility_db=# select length('a'::char(10)::text); length -------- 10 (1 row) td_compatibility_db=# select length('a'||'a'::char(10)); length -------- 11 (1 row) |
TD |
||||
convert_empty_str_to_null_td |
In Teradata-compatible mode, controls the to_date, to_timestamp, and to_number type conversion functions to return null when they encounter empty strings, and controls the format of the return value when the to_char function encounters an input parameter of the date type. Example: If this parameter is not specified: td_compatibility_db=# select to_number(''); to_number ----------- 0 (1 row) td_compatibility_db=# select to_date(''); ERROR: the format is not correct DETAIL: invalid date length "0", must between 8 and 10. CONTEXT: referenced column: to_date td_compatibility_db=# select to_timestamp(''); to_timestamp ------------------------ 0001-01-01 00:00:00 BC (1 row) td_compatibility_db=# select to_char(date '2020-11-16'); to_char ------------------------ 2020-11-16 00:00:00+08 (1 row) If this parameter is specified, and parameters of to_number, to_date, and to_timestamp functions contain empty strings: td_compatibility_db=# select to_number(''); to_number ----------- (1 row) td_compatibility_db=# select to_date(''); to_date --------- (1 row) td_compatibility_db=# select to_timestamp(''); to_timestamp -------------- (1 row) td_compatibility_db=# select to_char(date '2020-11-16'); to_char ------------ 2020/11/16 (1 row) |
TD |
||||
disable_case_specific |
Determines whether to ignore case sensitivity during character type match. This parameter is valid only in Teradata-compatible mode.
After being specified, this item will affect five character types (CHAR, TEXT, BPCHAR, VARCHAR, and NVARCHAR), 12 operators (<, >, =, >=, <=, !=, <>, !=, like, not like, in, and not in), and expressions case when and decode.
CAUTION:
After this item is enabled, the UPPER function is added before the character type, which affects the estimation logic. Therefore, an enhanced estimation model is required. (Suggested settings: cost_param = 16, cost_model_version = 1, join_num_distinct = –20, and qual_num_distinct = 200) |
TD |
||||
enable_interval_to_text |
Controls the implicit conversion from the interval type to the text type.
|
ORA TD MySQL |
||||
case_insensitive |
In MySQL-compatible mode, configure this parameter to specify the case-insensitive input parameters of the locate, strpos, and instr string functions. Currently, this parameter is not configured by default. That is, the input parameter is case-sensitive. Example:
|
MySQL |
||||
inherit_not_null_strict_func |
Controls the original strict attribute of a function. A function with one parameter can transfer the NOT NULL attribute. func(x) is used an example. If func() is the strict attribute and x contains the NOT NULL constraint, func(x) also contains the NOT NULL constraint. The compatible configuration item is effective in some optimization scenarios, for example, NOT IN and COUNT(DISTINCT) optimization. However, the optimization results may be incorrect in specific scenarios. Currently, this parameter is not configured by default to ensure that the result is correct. However, the performance may be rolled back. If an error occurs, you can set this parameter to roll back to the historical version. |
ORA TD MySQL |
||||
disable_compat_minmax_expr_mysql |
Specifies the method for processing the input parameter null in the greatest/least expression in MySQL-compatible mode. You can configure this parameter to roll back to a historical version.
|
MySQL |
||||
disable_compat_substr_mysql |
Specifies the behavior of the substr/substring function when the start position pos is ≤ 0 in MySQL-compatible mode. You can configure this parameter to roll back to a historical version.
|
MySQL |
||||
disable_compat_trim_mysql |
Specifies the method for processing the input parameter in the trim/ltrim/rtrim function in MySQL-compatible mode. You can configure this parameter to roll back to a historical version.
|
MySQL |
||||
light_object_mtime |
Specifies whether the mtime column in the pg_object system catalog records object operations.
|
ORA TD MySQL |
||||
disable_including_all_mysql |
In MySQL-compatible mode, this parameter controls whether the CREATE TABLE...LIKE syntax is INCLUDING_ALL. By default, this parameter is not set. That is, in MySQL compatibility mode, CREATE TABLE... LIKE syntax is INCLUDING_ALL. You can configure this parameter to roll back to a historical version.
|
MySQL |
||||
cte_onetime_inline |
Indicates whether to execute inline for non-stream plans.
|
ORA TD MySQL |
||||
skip_first_after_mysql |
Controls whether to ignore the FIRST/AFTER colname syntax in ALTER TABLE ADD/MODIFY/CHANGE COLUMN in MySQL-compatible mode.
|
MySQL |
||||
enable_division_by_zero_mysql |
Specifies whether division or modulo operations will result in an error when the divisor is 0 in MySQL-compatible mode. (This configuration item is supported only by clusters of version 8.1.3.110 or later.)
|
MySQL |
||||
normal_session_id |
Indicates whether to generate a session ID in normal format.
|
ORA TD MySQL |
||||
disable_jsonb_exact_match |
Specifies whether to check the jsonb type during fuzzy match for binary operators. (This parameter is supported by clusters of version 8.2.0 or later.)
|
ORA TD MySQL |
||||
merge_into_with_trigger |
Controls whether the MERGE INTO operation can be performed on tables with triggers. (This parameter is supported only by clusters of version 8.1.3.200 or later.)
|
ORA TD MySQL |
||||
add_column_default_v_func |
Controls whether expression in alter table add column default expression supports volatile functions. (This parameter is supported only by clusters of version 8.1.3.200 or later.)
|
ORA TD MySQL |
||||
disable_full_group_by_mysql |
Specifies whether to display non-aggregated function query columns after GROUP BY in a query. (This parameter is supported by clusters of version 8.2.0.101 or later.)
CAUTION:
This parameter must be used together with full_group_by_mode. For details, see full_group_by_mode. After configuring this option, if full_group_by_mode is set to notpadding, non-aggregated query columns that are not part of the GROUP BY clause must have consistent data after grouping. Otherwise, the values in that column will be random. |
MySQL |
||||
disable_gc_fdw_filter_partial_pushdown |
Controls whether filter criteria are pushed down when querying data from a foreign table (of type gc_fdw) in a collaborative analysis scenario. (This parameter is supported only by clusters of version 8.2.1 or later.)
|
ORA TD MySQL |
||||
ignore_unshipped_concurrent_update |
Determines whether to ignore new tuples when the UPDATE or DELETE statement is executed in the current session if the statement is not pushed down and the tuples are updated by other sessions. By default, new tuples are not processed. (This parameter is supported only by clusters of version 8.2.1 or later.)
|
ORA TD MySQL |
||||
disable_set_global_var_on_datanode |
Controls whether the set_config function can be used to set global variables on DNs. (This parameter is supported only by clusters of version 8.2.1 or later.)
|
ORA TD MySQL |
||||
deparse_view_with_partition |
Controls whether the view definition contains the partition clause when the table corresponding to the view is a partitioned table and the DML operation is performed on the view. (This parameter is supported only by clusters of version 8.2.1 or later.)
|
ORA TD MySQL |
||||
variadic_null_check |
Whether variadic can transfer the NULL parameter. This function is disabled by default. (This parameter is supported only by clusters of version 8.2.1.300 or later.)
|
ORA TD MySQL |
||||
enable_use_syscol_in_replicate_table |
Specifies whether oid, ctid, tableoid, or xc_node_id can be used as filter, join, and having conditions during INSERT, UPDATE, MERGE INTO, and DELETE statements are executed on replication tables. This parameter is not set by default. This parameter is supported only by clusters of version 8.2.1.200 or later.
|
ORA TD MYSQL |
||||
enable_force_add_batch |
Determines whether GaussDB(DWS) receives U packets in addbatch mode when support_batch_bind is set to on and enable_fast_query_shipping and enable_light_proxy are both set to off. This parameter is not set by default. This parameter is supported only by clusters of version 8.2.1.200 or later.
|
ORA TD MYSQL |
||||
disable_mergesort_without_material |
Controls whether the current stream segment contains materialized operators. If it is, merge sort is used. This parameter is supported only by clusters of version 8.2.1.100 or later.
|
ORA TD MYSQL |
||||
enable_pushdown_groupingset_subquery |
Specifies whether conditions from the outer query that are only related to a subquery can be pushed down to the subquery when the subquery contains a grouping set. This parameter is supported only by clusters of version 8.2.1.100 or later.
|
ORA TD MYSQL |
||||
enable_whole_row_var |
This parameter mainly involves two scenarios: 1. controlling whether tables or views are allowed to appear in SQL expressions, including but not limited to the target list of queries, GROUP BY lists, etc.; 2. controlling whether non-table records are allowed to appear in SQL expressions. This parameter is supported only by clusters of version 8.3.0 or later.
|
ORA TD MYSQL |
||||
enable_unknown_datatype |
Specifies whether tables containing unknown columns can be created. This parameter is supported only by clusters of version 8.3.0 or later.
|
ORA TD MYSQL |
||||
alter_distribute_key_by_partition |
Specifies whether INSERT INTO is executed by partition when ALTER TABLE is used to modify the distribution column of a partitioned table. This parameter is supported only by clusters of version 8.2.1.210 or later.
|
ORA TD MYSQL |
||||
disable_update_returning_check |
Specifies whether to prevent multiple joins when a replication table is updated with the returning statement. This parameter is supported only by clusters of version 8.3.0 or later.
|
ORA TD MYSQL |
||||
check_function_shippable |
Controls the check of the custom plpgsql/SQL function attributes. This parameter is supported only by clusters of version 8.3.0 or later.
For example, when this parameter is specified, an error is reported in the following scenarios:
|
ORA TD MYSQL |
||||
enable_full_string_agg |
Specifies how string_agg(a, delimeter) over (partition by b order by c) behaves in different situations, such as using full or incremental aggregation in the window. This parameter is supported only by clusters of version 8.3.0 or later. If this parameter is not set, incremental aggregation is used. If this parameter is set, full aggregation is used. By default, this parameter is not set.
|
ORA TD MYSQL |
||||
enable_banker_round |
Specifies how numeric types round their values, using the rounding or banker method. This parameter is supported only by clusters of version 8.3.0 or later. Behaviors controlled by parameters include:
NOTE:
The banker's rounding rule is as follows: if the digit to be rounded is greater than 5, round up; if it is less than 5, round down; if it is exactly 5, round to the nearest even number.
SET behavior_compat_options = enable_banker_round; SELECT 1.5::int1,1.5::int2,1.5::int4,1.5::int8,1.5::numeric(10,0),1.115::money; int1 | int2 | int4 | int8 | numeric | money ------+------+------+------+---------+------- 2 | 2 | 2 | 2 | 2 | $1.12 SELECT 0.5::int1,0.5::int2,0.5::int4,0.5::int8,0.5::numeric(10,0),1.105::money; int1 | int2 | int4 | int8 | numeric | money ------+------+------+------+---------+------- 0 | 0 | 0 | 0 | 0 | $1.10 SELECT round(1.05,1),round(1.15,1),cast('1.05',numeric(10,1)),cast('1.15',numeric(10,1)),to_char(1.05,'9D9'),to_char(1.15,'9D9'); round | round | numeric | numeric | to_char | to_char -------+-------+---------+---------+---------+--------- 1.0 | 1.2 | 1.0 | 1.2 | 1.0 | 1.2
SET behavior_compat_options = ''; SELECT 1.5::int1,1.5::int2,1.5::int4,1.5::int8,1.5::numeric(10,0),1.115::money; int1 | int2 | int4 | int8 | numeric | money ------+------+------+------+---------+------- 2 | 2 | 2 | 2 | 2 | $1.12 SELECT 0.5::int1,0.5::int2,0.5::int4,0.5::int8,0.5::numeric(10,0),1.105::money; int1 | int2 | int4 | int8 | numeric | money ------+------+------+------+---------+------- 1 | 1 | 1 | 1 | 1 | $1.11 SELECT round(1.05,1),round(1.15,1),cast('1.05',numeric(10,1)),cast('1.15',numeric(10,1)),to_char(1.05,'9D9'),to_char(1.15,'9D9'); round | round | numeric | numeric | to_char | to_char -------+-------+---------+---------+---------+--------- 1.1 | 1.2 | 1.1 | 1.2 | 1.1 | 1.2 |
ORA TD MYSQL |
||||
enable_int_division_by_truncate |
Controls whether the integer division behavior result set returns integers or floating point numbers and the option is compatible with PG or ORA behaviors.
|
ORA TD MYSQL |
||||
unsupported_set_function_case |
Specifies whether multiple result set functions can be returned in a CASE WHEN condition. This parameter is supported only by clusters of version 8.3.0.100 or later. This parameter is enabled by default for newly installed clusters of version 9.1.0 or later.
|
ORA TD MYSQL |
||||
enable_change_search_path |
Specifies whether the search path can be modified after forming a general plan generic_plan. This is supported only by clusters of version 9.1.0 or later.
|
TD |
||||
enable_varchar_to_nvarchar2 |
Specifies whether varchar fields created or updated through DDL statements are automatically switched to nvarchar2 fields. This is supported only by clusters of version 9.1.0 or later.
|
ORA TD MYSQL |
||||
normalize_negative_zero |
Specifies whether the ceil() and round() functions return –0 when processing specific values of the float type. This parameter is supported only by clusters of version 8.1.3.333 or later.
|
ORA TD MySQL |
||||
disable_client_detection_commit |
Specifies whether to check there is a connection with the client before each transaction is committed. If the connection does not exist, an error is reported, the transaction is rolled back, and data duplication caused by repeated issuance due to disconnection is prevented. This parameter is supported only by clusters of version 8.1.3.333 or later.
|
ORA TD MySQL |
||||
change_illegal_char |
Specifies the display of illegal UTF8 characters when reading with GDS. This parameter is supported only by clusters of version 8.3.0.100 or later. When this parameter is enabled, illegal UTF8 characters that are incompatible with GDS are displayed as "�" instead of "?". |
MySQL |
||||
row_use_pseudo_name |
Specifies whether row-related expressions generate pseudo column names for anonymous columns. This parameter is supported only by clusters of version 9.1.0.100 or later.
|
ORA TD MySQL |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.