Skip to content

Commit e566d41

Browse files
committed
Large scale overhaul, copy editing and fixes
(sorry, not an atomic commit...)
1 parent 358b729 commit e566d41

File tree

61 files changed

+1095
-1744
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+1095
-1744
lines changed

src/docs/asciidoc/en/refdocs/fblangref25/_fblangref25-dml.adoc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1279,8 +1279,7 @@ This means that it successfully matches every row in the left source to every ro
12791279
<cross-join> ::= {CROSS JOIN | ,} <source>
12801280
----
12811281

1282-
Please notice that the comma syntax is deprecated!
1283-
It is only supported to keep legacy code working and may disappear in some future version.
1282+
Use of the comma syntax is discouraged, and we recommend using the explicit join syntax.
12841283

12851284
Cross-joining two sets is equivalent to joining them on a tautology (a condition that is always true).
12861285
The following two statements have the same effect:

src/docs/asciidoc/en/refdocs/fblangref25/_fblangref25-dochist.adoc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ The exact file history is recorded in our _git_ repository; see https://github.c
1111
4+|Revision History
1212

1313
|1.13
14-
|TBD 2023
14+
|26 May 2023
1515
|MR
1616
a|* Added missing context variable names for <<fblangref25-functions-scalarfuncs-get-context>>
17-
* ...
17+
* Replaced mention that implicit join is deprecated and might get removed;
18+
its use is merely discouraged.
19+
* Removed incorrect `ROLE` keyword from example in <<fblangref25-security-rdbadmin01>>
1820

1921
|1.12
2022
|10 May 2023

src/docs/asciidoc/en/refdocs/fblangref25/_fblangref25-security.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,9 @@ In a regular database, the `RDB$ADMIN` role is granted and revoked with the usua
197197

198198
[listing,subs=+quotes]
199199
----
200-
GRANT [ROLE] RDB$ADMIN TO _username_
200+
GRANT RDB$ADMIN TO _username_
201201
202-
REVOKE [ROLE] RDB$ADMIN FROM _username_
202+
REVOKE RDB$ADMIN FROM _username_
203203
----
204204

205205
In order to grant and revoke the `RDB$ADMIN` role, the grantor must be logged in as an <<fblangref25-security-administrators,administrator>>.

src/docs/asciidoc/en/refdocs/fblangref25/firebird-25-language-reference.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[[fblangref25]]
22
= Firebird 2.5 Language Reference
33
Dmitry Filippov; Alexander Karpeykin; Alexey Kovyazin; Dmitry Kuzmenko; Denis Simonov; Paul Vinkenoog; Dmitry Yemanov
4-
1.13, TBD 2023
4+
1.13, 26 May 2023
55
:doctype: book
66
:sectnums:
77
:sectanchors:

src/docs/asciidoc/en/refdocs/fblangref30/_fblangref30-dml.adoc

Lines changed: 3 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1403,8 +1403,7 @@ This means that it successfully matches every row in the left source to every ro
14031403
<cross-join> ::= {CROSS JOIN | ,} <source>
14041404
----
14051405

1406-
Please notice that the comma syntax is deprecated!
1407-
It is only supported to keep legacy code working and may disappear in some future version.
1406+
Use of the comma syntax is discouraged, and we recommend using the explicit join syntax.
14081407

14091408
Cross-joining two sets is equivalent to joining them on a tautology (a condition that is always true).
14101409
The following two statements have the same effect:
@@ -1456,12 +1455,6 @@ FROM customers c, sales s
14561455
WHERE s.cust_id = c.id AND c.city = 'Detroit'
14571456
----
14581457

1459-
[IMPORTANT]
1460-
====
1461-
The implicit join syntax is deprecated and may be removed in a future version.
1462-
We recommend using the explicit join syntax shown earlier.
1463-
====
1464-
14651458
[[fblangref30-dml-select-joins-mix-implexpl]]
14661459
===== Mixing Explicit and Implicit Joins
14671460

@@ -1538,39 +1531,6 @@ But please notice again that, especially in outer joins, plain `colname` isn't a
15381531
Types may differ, and one of the qualified columns may be `NULL` while the other isn't.
15391532
In that case, the value in the merged, unqualified column may mask the fact that one of the source values is absent.
15401533

1541-
[[fblangref30-dml-select-joins-storedprocs]]
1542-
==== Joins with stored procedures
1543-
1544-
If a join is performed with a stored procedure that is not correlated with other data streams via input parameters, there are no oddities.
1545-
If correlation _is_ involved, an unpleasant quirk reveals itself.
1546-
The problem is that the optimizer denies itself any way to determine the interrelationships of the input parameters of the procedure from the fields in the other streams:
1547-
1548-
[source]
1549-
----
1550-
SELECT *
1551-
FROM MY_TAB
1552-
JOIN MY_PROC(MY_TAB.F) ON 1 = 1;
1553-
----
1554-
1555-
Here, the procedure will be executed before a single record has been retrieved from the table, `MY_TAB`.
1556-
The `isc_no_cur_rec error` error (_no current record for fetch operation_) is raised, interrupting the execution.
1557-
1558-
The solution is to use syntax that specifies the join order _explicitly_:
1559-
1560-
[source]
1561-
----
1562-
SELECT *
1563-
FROM MY_TAB
1564-
LEFT JOIN MY_PROC(MY_TAB.F) ON 1 = 1;
1565-
----
1566-
1567-
This forces the table to be read before the procedure and everything works correctly.
1568-
1569-
[TIP]
1570-
====
1571-
This quirk has been recognised as a bug in the optimizer and will be fixed in the next version of Firebird.
1572-
====
1573-
15741534
[[fblangref30-dml-select-where]]
15751535
=== The `WHERE` clause
15761536

@@ -4065,12 +4025,8 @@ Notice that the old values (1 and 2) are used to update the b column even after
40654025

40664026
[NOTE]
40674027
====
4068-
It was not always like that.
4069-
Before version 2.5, columns got their new values immediately upon assignment.
4070-
It was non-standard behaviour that was fixed in version 2.5.
4071-
4072-
To maintain compatibility with legacy code, the configuration file `firebird.conf` includes the parameter `OldSetClauseSemantics`, that can be set True (1) to restore the old, bad behaviour.
4073-
It is a temporary measure -- the parameter will be removed in the future.
4028+
Before Firebird 2.5, columns got their new values immediately upon assignment.
4029+
It was non-standard behaviour that was fixed in Firebird 2.5.
40744030
====
40754031

40764032
[[fblangref30-dml-update-whereclause]]

src/docs/asciidoc/en/refdocs/fblangref30/_fblangref30-dochist.adoc

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,14 @@ The exact file history is recorded in our _git_ repository; see https://github.c
1111
4+|Revision History
1212

1313
|1.15
14-
|TBD 2023
14+
|26 May 2023
1515
|MR
1616
a|* Added missing context variable names for <<fblangref30-scalarfuncs-get-context>>
1717
* `CURRENT_CONNECTION` returns `BIGINT`
18-
* ...
18+
* Removed section _Joins with stored procedures_ as it no longer applies
19+
* Replaced mention that implicit join is deprecated and might get removed;
20+
its use is merely discouraged.
21+
* Removed incorrect `ROLE` keyword from example in <<fblangref30-security-rdbadmin01>>
1922

2023
|1.14
2124
|10 May 2023

src/docs/asciidoc/en/refdocs/fblangref30/_fblangref30-psql.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1677,7 +1677,7 @@ END
16771677
|A logical condition returning TRUE, FALSE or UNKNOWN
16781678
|===
16791679

1680-
The `CONTINUE` statement skips the remainer of the current block of a loop and starts the next iteration of the current `WHILE` or `FOR` loop.
1680+
The `CONTINUE` statement skips the remainder of the current block of a loop and starts the next iteration of the current `WHILE` or `FOR` loop.
16811681
Using the optional _label_ parameter, `CONTINUE` can also start the next iteration of an outer loop, that is, the loop labelled with _label_.
16821682

16831683
[[fblangref30-psql-continue-exmpl]]

src/docs/asciidoc/en/refdocs/fblangref30/firebird-30-language-reference.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[[fblangref30]]
22
= Firebird 3.0 Language Reference
33
Dmitry Filippov; Alexander Karpeykin; Alexey Kovyazin; Dmitry Kuzmenko; Denis Simonov; Paul Vinkenoog; Dmitry Yemanov; Mark Rotteveel
4-
1.15, TBD 2023
4+
1.15, 26 May 2023
55
:doctype: book
66
:sectnums:
77
:sectanchors:

src/docs/asciidoc/en/refdocs/fblangref30/security/_fblangref30-security-auth.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,9 +216,9 @@ In a regular database, the `RDB$ADMIN` role is granted and revoked with the usua
216216

217217
[listing,subs=+quotes]
218218
----
219-
GRANT [ROLE] RDB$ADMIN TO _username_
219+
GRANT RDB$ADMIN TO _username_
220220
221-
REVOKE [ROLE] RDB$ADMIN FROM _username_
221+
REVOKE RDB$ADMIN FROM _username_
222222
----
223223

224224
[[fblangref30-security-tbl-rdbadmin0]]

src/docs/asciidoc/en/refdocs/fblangref40/_fblangref40-datatypes.adoc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -675,8 +675,7 @@ The actual precision of values stored in or read from time(stamp) functions and
675675
* `CURRENT_TIMESTAMP` and `LOCALTIMESTAMP` default to milliseconds precision.
676676
Precision from seconds to milliseconds can be specified with `CURRENT_TIMESTAMP (0|1|2|3)` or `LOCALTIMESTAMP (0|1|2|3)`
677677
* Literal `'NOW'` defaults to milliseconds precision
678-
* Function `DATEADD()` supports up to deci-milliseconds precision with `MILLISECOND`
679-
* Function `DATEDIFF()` only supports up to milliseconds precision
678+
* Functions `DATEADD()` and -- since Firebird 4.0.1 -- `DATEDIFF()` support up to deci-milliseconds precision with `MILLISECOND`
680679
* The `EXTRACT()` function returns up to deci-milliseconds precision with the `SECOND` and `MILLISECOND` arguments
681680
* the '```{plus}```' and '```-```' operators work with deci-milliseconds precision.
682681
@@ -695,7 +694,7 @@ Storing at UTC has some caveats:
695694
- When you use named zones, and the time zone rules for that zone change, the UTC time stays the same, but the local time in the named zone may change.
696695
- For `TIME WITH TIME ZONE`, calculating a time zone offset for a named zone to get the local time in the zone applies the rules valid at the 1st of January 2020 to ensure a stable value.
697696
This may result in unexpected or confusing results.
698-
- When the rules of a named time zone changes, a value in the affected date range may longer match the intended value if the actual offset in that named zone changes.
697+
- When the rules of a named time zone changes, a value in the affected date range may no longer match the intended value if the actual offset in that named zone changes.
699698
****
700699

701700
[[fblangref40-datatypes-date]]
@@ -2428,7 +2427,7 @@ For more information, see <<fblangref40-datatypes-array>>
24282427
<array_datatype> ::=
24292428
{SMALLINT | INT[EGER] | BIGINT | INT128} <array_dim>
24302429
| {REAL | FLOAT [(_bin_prec_)] | DOUBLE PRECISION} <array_dim>
2431-
| DECFLOAT [(_dec_prec_)]
2430+
| DECFLOAT [(_dec_prec_)] <array_dim>
24322431
| BOOLEAN <array_dim>
24332432
| DATE <array_dim>
24342433
| TIME [{WITHOUT | WITH} TIME ZONE] <array_dim>

src/docs/asciidoc/en/refdocs/fblangref40/_fblangref40-dml.adoc

Lines changed: 1 addition & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1422,8 +1422,7 @@ This means that it successfully matches every row in the left source to every ro
14221422
<cross-join> ::= {CROSS JOIN | ,} <source>
14231423
----
14241424

1425-
Please notice that the comma syntax is deprecated!
1426-
It is only supported to keep legacy code working and may disappear in some future version.
1425+
Use of the comma syntax is discouraged, and we recommend using the explicit join syntax.
14271426

14281427
Cross-joining two sets is equivalent to joining them on a tautology (a condition that is always true).
14291428
The following two statements have the same effect:
@@ -1475,12 +1474,6 @@ FROM customers c, sales s
14751474
WHERE s.cust_id = c.id AND c.city = 'Detroit'
14761475
----
14771476

1478-
[IMPORTANT]
1479-
====
1480-
The implicit join syntax is deprecated and may be removed in a future version.
1481-
We recommend using the explicit join syntax shown earlier.
1482-
====
1483-
14841477
[[fblangref40-dml-select-joins-mix-implexpl]]
14851478
===== Mixing Explicit and Implicit Joins
14861479

@@ -1557,39 +1550,6 @@ But please notice again that, especially in outer joins, plain `colname` isn't a
15571550
Types may differ, and one of the qualified columns may be `NULL` while the other isn't.
15581551
In that case, the value in the merged, unqualified column may mask the fact that one of the source values is absent.
15591552

1560-
[[fblangref40-dml-select-joins-storedprocs]]
1561-
==== Joins with stored procedures
1562-
1563-
If a join is performed with a stored procedure that is not correlated with other data streams via input parameters, there are no oddities.
1564-
If correlation _is_ involved, an unpleasant quirk reveals itself.
1565-
The problem is that the optimizer denies itself any way to determine the interrelationships of the input parameters of the procedure from the fields in the other streams:
1566-
1567-
[source]
1568-
----
1569-
SELECT *
1570-
FROM MY_TAB
1571-
JOIN MY_PROC(MY_TAB.F) ON 1 = 1;
1572-
----
1573-
1574-
Here, the procedure will be executed before a single record has been retrieved from the table, `MY_TAB`.
1575-
The `isc_no_cur_rec error` error (_no current record for fetch operation_) is raised, interrupting the execution.
1576-
1577-
The solution is to use syntax that specifies the join order _explicitly_:
1578-
1579-
[source]
1580-
----
1581-
SELECT *
1582-
FROM MY_TAB
1583-
LEFT JOIN MY_PROC(MY_TAB.F) ON 1 = 1;
1584-
----
1585-
1586-
This forces the table to be read before the procedure and everything works correctly.
1587-
1588-
[TIP]
1589-
====
1590-
This quirk has been recognised as a bug in the optimizer and will be fixed in the next version of Firebird.
1591-
====
1592-
15931553
[[fblangref40-dml-select-joins-lateral]]
15941554
==== Joins with `LATERAL` Derived Tables
15951555

@@ -4266,16 +4226,6 @@ A B
42664226

42674227
Notice that the old values (1 and 2) are used to update the b column even after the column was assigned a new value (5).
42684228

4269-
[NOTE]
4270-
====
4271-
It was not always like that.
4272-
Before version 2.5, columns got their new values immediately upon assignment.
4273-
It was non-standard behaviour that was fixed in version 2.5.
4274-
4275-
To maintain compatibility with legacy code, the configuration file `firebird.conf` includes the parameter `OldSetClauseSemantics`, that can be set True (1) to restore the old, bad behaviour.
4276-
It is a temporary measure -- the parameter will be removed in the future.
4277-
====
4278-
42794229
[[fblangref40-dml-update-whereclause]]
42804230
=== The `WHERE` Clause
42814231

src/docs/asciidoc/en/refdocs/fblangref40/_fblangref40-dochist.adoc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,18 @@ The exact file history is recorded in our _git_ repository; see https://github.c
1111
4+|Revision History
1212

1313
|2.5
14-
|TBD 2023
14+
|26 May 2023
1515
|MR
1616
a|* Added missing context variable names for <<fblangref40-scalarfuncs-get-context>>
1717
* Documented hex-literal support for `INT128` since 4.0.1
1818
* `CURRENT_CONNECTION` returns `BIGINT`
1919
* Example for `RDB$ROLE_IN_USE()` should use `RDB$ROLES` (https://github.com/FirebirdSQL/firebird-documentation/issues/184[#184])
20-
* ...
20+
* Removed section _Joins with stored procedures_ as it no longer applies
21+
* Replaced mention that implicit join is deprecated and might get removed;
22+
its use is merely discouraged.
23+
* Added note in <<fblangref40-scalarfuncs-tbl-encrypt-req>> about AES variants
24+
* Replaced incorrect `ROLE` keyword with `DEFAULT` in example in <<fblangref40-security-rdbadmin01>>
25+
* Miscellaneous copy-editing
2126

2227
|2.4
2328
|10 May 2023

src/docs/asciidoc/en/refdocs/fblangref40/_fblangref40-functions-scalar.adoc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4620,7 +4620,10 @@ We recommend searching the internet for further details on the algorithms.
46204620
|AES
46214621
|16, 24, 32
46224622
|16
4623-
|{nbsp}
4623+
a|Key size determines the AES variant: +
4624+
16 bytes -> AES-128 +
4625+
24 bytes -> AES-192 +
4626+
32 bytes -> AES-256
46244627

46254628
|ANUBIS
46264629
|16 - 40, in steps of 4

src/docs/asciidoc/en/refdocs/fblangref40/_fblangref40-psql.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1793,7 +1793,7 @@ END
17931793
|A logical condition returning TRUE, FALSE or UNKNOWN
17941794
|===
17951795

1796-
The `CONTINUE` statement skips the remainer of the current block of a loop and starts the next iteration of the current `WHILE` or `FOR` loop.
1796+
The `CONTINUE` statement skips the remainder of the current block of a loop and starts the next iteration of the current `WHILE` or `FOR` loop.
17971797
Using the optional _label_ parameter, `CONTINUE` can also start the next iteration of an outer loop, that is, the loop labelled with _label_.
17981798

17991799
[[fblangref40-psql-continue-exmpl]]

src/docs/asciidoc/en/refdocs/fblangref40/firebird-40-language-reference.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[[fblangref40]]
22
= Firebird 4.0 Language Reference
33
Dmitry Filippov; Alexander Karpeykin; Alexey Kovyazin; Dmitry Kuzmenko; Denis Simonov; Paul Vinkenoog; Dmitry Yemanov; Mark Rotteveel
4-
2.5, TBD 2023
4+
2.5, 26 May 2023
55
:doctype: book
66
:sectnums:
77
:sectanchors:

src/docs/asciidoc/en/refdocs/fblangref40/security/_fblangref40-security-auth.adoc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -235,11 +235,11 @@ Depending on the administrative status of the current user, more parameters may
235235
[[fblangref40-security-rdbadmin05]]
236236
==== Using the `RDB$ADMIN` Role in the Security Database
237237

238-
To manage user accounts through SQL, the grantee must specify the `RDB$ADMIN` role when connecting or through `SET ROLE`.
239-
No user can connect to the security database remotely, so the solution is that the user connects to a regular database where they also have `RDB$ADMIN` rights, supplying the `RDB$ADMIN` role in their login parameters.
238+
To manage user accounts through SQL, the user must have the `RDB$ADMIN` role in the security database.
239+
No user can connect to the security database remotely, so the solution is that the user connects to a regular database.
240240
From there, they can submit any SQL user management command.
241241

242-
If there is no regular database where the user has the `RDB$ADMIN` role, then account management via SQL queries is not possible, unless they connect directly to the security database using an embedded connection.
242+
Contrary to Firebird 3.0 or earlier, the user does not need to specify the `RDB$ADMIN` role on connect, nor do they need to have the `RDB$ADMIN` role in the database used to connect.
243243

244244
[[fblangref40-security-rdbadmin0]]
245245
===== Using _gsec_ with `RDB$ADMIN Rights`
@@ -253,9 +253,9 @@ In a regular database, the `RDB$ADMIN` role is granted and revoked with the usua
253253

254254
[listing,subs=+quotes]
255255
----
256-
GRANT [ROLE] RDB$ADMIN TO _username_
256+
GRANT [DEFAULT] RDB$ADMIN TO _username_
257257
258-
REVOKE [ROLE] RDB$ADMIN FROM _username_
258+
REVOKE [DEFAULT] RDB$ADMIN FROM _username_
259259
----
260260

261261
[[fblangref40-security-tbl-rdbadmin0]]

src/docs/asciidoc/en/refdocs/fblangref40/security/_fblangref40-security-sql-security.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
The `SQL SECURITY` clause of various DDL statements enables executable objects (triggers, stored procedures, stored functions) to be defined to run in a specific context of privileges.
55

66
The SQL Security feature has two contexts: `INVOKER` and `DEFINER`.
7-
The `INVOKER` context corresponds to the privileges available to the current user or the calling object, while `DEFINERE` corresponds to those available to the owner of the object.
7+
The `INVOKER` context corresponds to the privileges available to the current user or the calling object, while `DEFINER` corresponds to those available to the owner of the object.
88

99
The `SQL SECURITY` property is an optional part of an object's definition that can be applied to the object with DDL statements.
1010
The property cannot be dropped, but it can be changed from `INVOKER` to `DEFINER` and vice versa.
1111

1212
This is not the same thing as SQL privileges, which are applied to users and some types of database objects to give them various types of access to other database objects.
13-
When an executable object is Firebird needs access to a table, view or another executable object, the target object is not accessible if the invoker does not have the necessary privileges on that object.
13+
When an executable object in Firebird needs access to a table, view or another executable object, the target object is not accessible if the invoker does not have the necessary privileges on that object.
1414
That has been the situation in previous Firebird versions and remains so in Firebird 4.0.
1515
That is, by default all executable objects have the `SQL SECURITY INVOKER` property, and any caller lacking the necessary privileges will be rejected.
1616
The default SQL Security behaviour of a database can be overridden using <<fblangref40-ddl-db-alter,`ALTER DATABASE`>>.

0 commit comments

Comments
 (0)