mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-22 17:23:03 +01:00
Started with doc for a feature
This commit is contained in:
parent
d01fff6fbb
commit
a6b05a671e
@ -175,21 +175,6 @@ DECFLOAT (FB 4.0)
|
||||
by a comma-separated string with its value (case does not matter; using a single
|
||||
optional space after commas).
|
||||
|
||||
SET DECFLOAT BIND <bind-type> - controls how are DECFLOAT values represented in outer
|
||||
world (i.e. in messages or in XSQLDA). Valid binding types are: NATIVE (use IEEE754
|
||||
binary representation), CHAR/CHARACTER (use ASCII string), DOUBLE PRECISION (use
|
||||
8-byte FP representation - same as used for DOUBLE PRECISION fields) or BIGINT
|
||||
with possible comma-separated SCALE clause (i.e. 'BIGINT, 3'). Various bindings
|
||||
are useful if one plans to use DECFLOAT values with some old client not supporting
|
||||
native format. One can choose between strings (ideal precision, but poor support
|
||||
for further processing), floating point values (ideal support for further processing
|
||||
but poor precision) or scaled integers (good support for further processing and
|
||||
required precision but range of values is very limited). When using in a tool like
|
||||
generic purporse GUI client choice of CHAR binding is OK in most cases. By default
|
||||
NATIVE binding is used.
|
||||
The initial configuration may be specified with DPB isc_dpb_decfloat_bind followed
|
||||
by a string with its value (case does not matter).
|
||||
|
||||
5. The length of DECFLOAT literals are limited to 1024 characters. For longer values, you will
|
||||
need to use the scientific notation. For example, the 0.0<1020 zeroes>11 cannot be used
|
||||
as a literal, instead you can use the equivalent in scientific notation: 1.1E-1022.
|
||||
@ -226,17 +211,3 @@ Enhancement in precision of calculations with NUMERIC/DECIMAL (FB 4.0)
|
||||
various math (log, exp, etc.) and aggregate functions using high precision numeric argument is
|
||||
DECFLOAT(34).
|
||||
|
||||
SET INT128 BIND <bind-type> - controls how are INT128 values represented in outer
|
||||
world (i.e. in messages or in XSQLDA). Valid binding types are: NATIVE (use 128-bit
|
||||
binary representation), CHAR/CHARACTER (use ASCII string), DOUBLE PRECISION (use
|
||||
8-byte FP representation - same as used for DOUBLE PRECISION fields) or BIGINT
|
||||
with possible comma-separated SCALE clause (i.e. 'BIGINT, 3'). Various bindings
|
||||
are useful if one plans to use 128-bit integers with some old client not supporting
|
||||
native format. One can choose between strings (ideal precision, but poor support
|
||||
for further processing), floating point values (ideal support for further processing
|
||||
but poor precision) or scaled integers (good support for further processing and
|
||||
required precision but range of values is very limited). When using in a tool like
|
||||
generic purporse GUI client choice of CHAR binding is OK in most cases. By default
|
||||
NATIVE binding is used.
|
||||
The initial configuration may be specified with DPB isc_dpb_int128_bind followed
|
||||
by a string with its value (case does not matter).
|
||||
|
@ -8,14 +8,13 @@ As many applications depends that some management statements be issued on the co
|
||||
|
||||
The management statements part of this improvement are:
|
||||
- `ALTER SESSION RESET`
|
||||
- `SET BIND OF ... TO`
|
||||
- `SET DECFLOAT ROUND`
|
||||
- `SET DECFLOAT TRAPS TO`
|
||||
- `SET DECFLOAT BIND`
|
||||
- `SET ROLE`
|
||||
- `SET SESSION IDLE TIMEOUT`
|
||||
- `SET STATEMENT TIMEOUT`
|
||||
- `SET TIME ZONE`
|
||||
- `SET TIME ZONE BIND`
|
||||
- `SET TRUSTED ROLE`
|
||||
|
||||
## Examples
|
||||
@ -24,7 +23,7 @@ The management statements part of this improvement are:
|
||||
create or alter trigger on_connect on connect
|
||||
as
|
||||
begin
|
||||
set decfloat bind double precision;
|
||||
set bind of decfloat to double precision;
|
||||
set time zone 'America/Sao_Paulo';
|
||||
end
|
||||
```
|
||||
|
62
doc/sql.extensions/README.set_bind.md
Normal file
62
doc/sql.extensions/README.set_bind.md
Normal file
@ -0,0 +1,62 @@
|
||||
# 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 type1 TO type2;
|
||||
SET BIND OF type NATIVE;
|
||||
```
|
||||
|
||||
### Description:
|
||||
|
||||
Makes it possible to define rules of describing types of returned to the client columns in non-standard way - `type1` is replaced with `type2`, 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)`. When incomplete type definiton is used in right side of the statement firebird engine will define missing parts automatically based on source column.
|
||||
|
||||
### 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
|
||||
```
|
@ -163,32 +163,6 @@ set time zone 'America/Sao_Paulo';
|
||||
set time zone local;
|
||||
```
|
||||
|
||||
### `SET TIME ZONE BIND` statement
|
||||
|
||||
Changes the session time zone bind for compatibility with old clients.
|
||||
|
||||
The default is `NATIVE`, which means that `TIME WITH TIME ZONE` and `TIMESTAMP WITH TIME ZONE` expressions are returned with they new data types to the client.
|
||||
|
||||
Old clients may not understand the new data types, so it's possible to define the bind to `LEGACY` and the expressions will be returned as `TIME WITHOUT TIME ZONE` and `TIMESTAMP WITHOUT TIME ZONE`, with appropriate conversion.
|
||||
|
||||
The bind configuration is also applicable to input parameters.
|
||||
|
||||
The initial configuration of time zone bind may be specified with DPB `isc_dpb_time_zone_bind` followed by a string with its value (case does not matter).
|
||||
|
||||
#### Syntax
|
||||
|
||||
```
|
||||
SET TIME ZONE BIND { NATIVE | LEGACY }
|
||||
```
|
||||
|
||||
#### Examples
|
||||
|
||||
```
|
||||
set time zone bind native;
|
||||
|
||||
set time zone bind legacy;
|
||||
```
|
||||
|
||||
### `AT` expression
|
||||
|
||||
Translates a time/timestamp value to its correspondent value in another time zone.
|
||||
|
Loading…
Reference in New Issue
Block a user