diff --git a/CHANGELOG.md b/CHANGELOG.md
index def6b77e5e..7fb1c54475 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -58,12 +58,20 @@
Reference(s): [doc/sql.extensions/README.identity_columns](https://github.com/FirebirdSQL/firebird/raw/master/doc/sql.extensions/README.identity_columns.txt)
Contributor(s): Adriano dos Santos Fernandes
+* [CORE-5380](http://tracker.firebirdsql.org/browse/CORE-5380): Allow subroutines to call others subroutines and themself recursively
+ Reference(s): [doc/sql.extensions/README.subroutines.txt](https://github.com/FirebirdSQL/firebird/raw/master/doc/sql.extensions/README.subroutines.txt)
+ Contributor(s): Adriano dos Santos Fernandes
+
* [CORE-5119](http://tracker.firebirdsql.org/browse/CORE-5119): Support autocommit mode in SET TRANSACTION statement
Contributor(s): Dmitry Yemanov
* [CORE-5064](http://tracker.firebirdsql.org/browse/CORE-5064): Add datatypes (VAR)BINARY(n) and BINARY VARYING(n) as aliases for (VAR)CHAR(n) CHARACTER SET OCTETS
Contributor(s): Dimitry Sibiryakov
+* [CORE-4436](http://tracker.firebirdsql.org/browse/CORE-4436): Support for different hash algorithms in HASH system function
+ Reference(s): [doc/sql.extensions/README.builtin_functions.txt](https://github.com/FirebirdSQL/firebird/raw/master/doc/sql.extensions/README.builtin_functions.txt)
+ Contributor(s): Adriano dos Santos Fernandes
+
* [CORE-2557](http://tracker.firebirdsql.org/browse/CORE-2557): Grants on MON$ tables
Contributor(s): Alex Peshkoff
diff --git a/builds/install/arch-specific/linux/firebird-classic.service.in b/builds/install/arch-specific/linux/firebird-classic.service.in
deleted file mode 100644
index aad7ae103a..0000000000
--- a/builds/install/arch-specific/linux/firebird-classic.service.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Firebird Database Server ( Classic )
-After=local-fs.target
-
-[Service]
-User=firebird
-Group=firebird
-ExecStart=@FB_SBINDIR@/firebird
-StandardInput=socket
-StandardError=syslog
diff --git a/builds/install/arch-specific/linux/firebird-classic.socket.in b/builds/install/arch-specific/linux/firebird-classic.socket.in
deleted file mode 100644
index 6ce30741a5..0000000000
--- a/builds/install/arch-specific/linux/firebird-classic.socket.in
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Firebird Classic Activation Socket
-Conflicts=firebird-superserver.service
-
-[Socket]
-ListenStream=3050
-Accept=true
-MaxConnections=2048
-
-[Install]
-WantedBy=sockets.target
diff --git a/builds/install/arch-specific/linux/firebird.init.d.slackware.in b/builds/install/arch-specific/linux/firebird.init.d.slackware.in
index a75a431670..328a91b4ad 100644
--- a/builds/install/arch-specific/linux/firebird.init.d.slackware.in
+++ b/builds/install/arch-specific/linux/firebird.init.d.slackware.in
@@ -2,7 +2,7 @@
#
# /etc/rc.d/rc.firebirdss
#
-# Start/stop/restart the firebird super server.
+# Start/stop/restart the firebird server.
#
fb_install_prefix=@prefix@
diff --git a/builds/install/arch-specific/linux/firebird.init.d.suse.in b/builds/install/arch-specific/linux/firebird.init.d.suse.in
index 11eb6da47d..d8e2ea2046 100644
--- a/builds/install/arch-specific/linux/firebird.init.d.suse.in
+++ b/builds/install/arch-specific/linux/firebird.init.d.suse.in
@@ -9,7 +9,7 @@
#
# /usr/sbin/rcfirebird
#
-# System startup script for the Firebird SuperServer
+# System startup script for the Firebird Server
#
### BEGIN INIT INFO
# Provides: firebird
diff --git a/builds/install/arch-specific/linux/firebird-superserver.service.in b/builds/install/arch-specific/linux/firebird.service.in
similarity index 76%
rename from builds/install/arch-specific/linux/firebird-superserver.service.in
rename to builds/install/arch-specific/linux/firebird.service.in
index a13b092c41..6abaf76dab 100644
--- a/builds/install/arch-specific/linux/firebird-superserver.service.in
+++ b/builds/install/arch-specific/linux/firebird.service.in
@@ -1,7 +1,6 @@
[Unit]
-Description=Firebird Database Server ( SuperServer )
+Description=Firebird Database Server
After=syslog.target network.target
-Conflicts=firebird-classic.socket
[Service]
User=firebird
diff --git a/builds/install/arch-specific/linux/firebird.xinetd.in b/builds/install/arch-specific/linux/firebird.xinetd.in
deleted file mode 100644
index 93555709d7..0000000000
--- a/builds/install/arch-specific/linux/firebird.xinetd.in
+++ /dev/null
@@ -1,17 +0,0 @@
-# default: on
-# description: FirebirdSQL server
-#
-
-service @FB_SERVICE_NAME@
-{
- disable = no
- flags = REUSE
- socket_type = stream
- wait = no
- user = root
-# These lines cause problems with Windows XP SP2 clients
-# using default firewall configuration (SF#1065511)
-# log_on_success += USERID
-# log_on_failure += USERID
- server = @FB_SBINDIR@/firebird
-}
diff --git a/builds/install/arch-specific/linux/linuxLibrary.sh.in b/builds/install/arch-specific/linux/linuxLibrary.sh.in
index f6eb020730..82a0f25821 100644
--- a/builds/install/arch-specific/linux/linuxLibrary.sh.in
+++ b/builds/install/arch-specific/linux/linuxLibrary.sh.in
@@ -111,8 +111,7 @@ getInitScriptLocation() {
# register/start/stop server using systemd
SYSTEMCTL=systemctl
-CLASSIC_CTRL=${fb_startup_name}-classic.socket
-SUPER_CTRL=${fb_startup_name}-superserver.service
+CTRL=${fb_startup_name}.service
SYSTEMD_DIR=/usr/lib/systemd/system
[ -d $SYSTEMD_DIR ] || SYSTEMD_DIR=/lib/systemd/system
TMPFILE_CONF=/usr/lib/tmpfiles.d/firebird.conf
@@ -140,13 +139,9 @@ installSystemdCtrlFiles() {
exit 1
fi
- editFile "@FB_MISCDIR@/firebird-superserver.service" ExecStart "ExecStart=${fb_install_prefix}/bin/fbguard -pidfile $PidDir/${fb_startup_name}.pid -daemon -forever"
- editFile "@FB_MISCDIR@/firebird-superserver.service" PIDFile "PIDFile=$PidDir/${fb_startup_name}.pid"
- editFile "@FB_MISCDIR@/firebird-classic@.service" ExecStart "ExecStart=${fb_install_prefix}/bin/firebird"
-
- cp @FB_MISCDIR@/firebird-superserver.service "${SYSTEMD_DIR}/${fb_startup_name}-superserver.service"
- cp @FB_MISCDIR@/firebird-classic@.service "${SYSTEMD_DIR}/${fb_startup_name}-classic@.service"
- cp @FB_MISCDIR@/firebird-classic.socket "${SYSTEMD_DIR}/${fb_startup_name}-classic.socket"
+ editFile "@FB_MISCDIR@/firebird.service" ExecStart "ExecStart=${fb_install_prefix}/bin/fbguard -pidfile $PidDir/${fb_startup_name}.pid -daemon -forever"
+ editFile "@FB_MISCDIR@/firebird.service" PIDFile "PIDFile=$PidDir/${fb_startup_name}.pid"
+ cp @FB_MISCDIR@/firebird.service "${SYSTEMD_DIR}/${fb_startup_name}.service"
mkdir -p ${PidDir}
chown $RunUser:$RunGroup ${PidDir}
@@ -156,7 +151,7 @@ installSystemdCtrlFiles() {
}
osRemoveStartupFiles() {
- rm -f ${SYSTEMD_DIR}/${fb_startup_name}-*
+ rm -f ${SYSTEMD_DIR}/${fb_startup_name}.*
rm -f ${TMPFILE_CONF}
}
@@ -180,33 +175,10 @@ systemdSrv() {
return 1
}
-classicSrv() {
- op=${1}
-
- systemdSrv ${op} ${CLASSIC_CTRL}
-}
-
superSrv() {
op=${1}
- systemdSrv ${op} ${SUPER_CTRL}
-}
-
-osRegisterClassicServer() {
- installSystemdCtrlFiles
- classicSrv enable
-}
-
-osUnregisterClassicServer() {
- classicSrv disable
-}
-
-osStartClassicServer() {
- classicSrv start
-}
-
-osStopClassicServer() {
- classicSrv stop
+ systemdSrv ${op} ${CTRL}
}
registerSuperServer() {
@@ -236,9 +208,6 @@ stopSuperServer() {
}
-# Additional OS settings
-systemdPresent && OS_Has_Specific_Classic_Startup=yes
-
#------------------------------------------------------------------------
# stop super server if it is running
@@ -493,7 +462,7 @@ removeServiceAutostart() {
standaloneServerInstalled() {
if systemdPresent; then
- ${SYSTEMCTL} --quiet is-enabled ${SUPER_CTRL} && return 0
+ ${SYSTEMCTL} --quiet is-enabled ${CTRL} && return 0
return 1
fi
diff --git a/builds/install/arch-specific/linux/makeInstallImage.sh.in b/builds/install/arch-specific/linux/makeInstallImage.sh.in
index 0cf0fbe504..d6a8a840aa 100644
--- a/builds/install/arch-specific/linux/makeInstallImage.sh.in
+++ b/builds/install/arch-specific/linux/makeInstallImage.sh.in
@@ -285,10 +285,9 @@ copyFiles() {
#misc
cp $BuildRootDir/src/misc/intl.sql ${TargetDir}@FB_MISCDIR@
cp $BuildRootDir/src/misc/upgrade/v3.0/security_database* ${TargetDir}@FB_MISCDIR@/upgrade/security
- cp $BuildRootDir/gen/install/misc/firebird.xinetd ${TargetDir}@FB_MISCDIR@
cp $BuildRootDir/gen/install/misc/firebird.init.d.* ${TargetDir}@FB_MISCDIR@
cp $BuildRootDir/gen/install/misc/rc.config.firebird ${TargetDir}@FB_MISCDIR@
- cp $BuildRootDir/gen/install/misc/firebird-* ${TargetDir}@FB_MISCDIR@
+ cp $BuildRootDir/gen/install/misc/firebird.service ${TargetDir}@FB_MISCDIR@
chmod -R go-rwx ${TargetDir}@FB_MISCDIR@
diff --git a/builds/install/posix-common/FirebirdUninstall.sh.in b/builds/install/posix-common/FirebirdUninstall.sh.in
index 98c3ce15ca..ad3ae94151 100644
--- a/builds/install/posix-common/FirebirdUninstall.sh.in
+++ b/builds/install/posix-common/FirebirdUninstall.sh.in
@@ -69,7 +69,6 @@ done
removeLinksForBackCompatibility
removeServiceAutostart
-removeInetdServiceEntry
if [ -d $PidDir ]
then
@@ -82,9 +81,4 @@ removeInstalledFiles # Remove installed files
removeUninstallFiles # Remove the 'uninstall' utility files
removeEmptyDirs # Remove empty directories
-if [ "$OS_Has_Specific_Classic_Startup" ]
-then
- osRemoveStartupFiles
-fi
-
displayMessage "Uninstall completed"
diff --git a/builds/install/posix-common/changeServerMode.sh.in b/builds/install/posix-common/changeServerMode.sh.in
index d9475ea08e..e0383d8837 100644
--- a/builds/install/posix-common/changeServerMode.sh.in
+++ b/builds/install/posix-common/changeServerMode.sh.in
@@ -27,6 +27,11 @@ cat <
+
@@ -62,6 +63,7 @@
+
@@ -91,6 +93,11 @@
+
+
+
+
+
@@ -158,6 +165,7 @@
+
@@ -196,6 +204,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -283,7 +304,7 @@
0x041d
- ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\Release\tommath.lib;%(AdditionalDependencies)
+ ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\$(Configuration)\tommath.lib;../../../extern/decNumber/lib/$(PlatformName)\$(Configuration)\decnumber.lib;%(AdditionalDependencies)
@@ -299,7 +320,7 @@
0x041d
- ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\Debug\tommath.lib;%(AdditionalDependencies)
+ ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\$(Configuration)\tommath.lib;../../../extern/decNumber/lib/$(PlatformName)\$(Configuration)\decnumber.lib;%(AdditionalDependencies)
@@ -318,7 +339,7 @@
0x041d
- ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\Release\tommath.lib;%(AdditionalDependencies)
+ ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\$(Configuration)\tommath.lib;../../../extern/decNumber/lib/$(PlatformName)\$(Configuration)\decnumber.lib;%(AdditionalDependencies)
@@ -336,7 +357,7 @@
0x041d
- ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\Debug\tommath.lib;%(AdditionalDependencies)
+ ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\$(Configuration)\tommath.lib;../../../extern/decNumber/lib/$(PlatformName)\$(Configuration)\decnumber.lib;%(AdditionalDependencies)
diff --git a/builds/win32/msvc10/common.vcxproj.filters b/builds/win32/msvc10/common.vcxproj.filters
index 871ca48d2f..1463f617a2 100644
--- a/builds/win32/msvc10/common.vcxproj.filters
+++ b/builds/win32/msvc10/common.vcxproj.filters
@@ -13,6 +13,9 @@
{03f83331-723e-4ba5-9ebb-348f0554a088}
+
+ {dd0bb92e-0a1e-4406-96ff-5265e8d28258}
+
@@ -214,6 +217,27 @@
classes
+ common
+
+
+ classes
+
+
+ tomcrypt
+
+
+ tomcrypt
+
+
+ tomcrypt
+
+
+ tomcrypt
+
+
+ tomcrypt
+
+
classes
@@ -530,5 +554,47 @@
headers
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
\ No newline at end of file
diff --git a/builds/win32/msvc12/common.vcxproj b/builds/win32/msvc12/common.vcxproj
index 7fe6f7c086..9391f03c2a 100644
--- a/builds/win32/msvc12/common.vcxproj
+++ b/builds/win32/msvc12/common.vcxproj
@@ -45,6 +45,7 @@
+
@@ -88,6 +89,11 @@
+
+
+
+
+
@@ -194,6 +200,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/builds/win32/msvc12/common.vcxproj.filters b/builds/win32/msvc12/common.vcxproj.filters
index 8fec78de3a..1463f617a2 100644
--- a/builds/win32/msvc12/common.vcxproj.filters
+++ b/builds/win32/msvc12/common.vcxproj.filters
@@ -13,6 +13,9 @@
{03f83331-723e-4ba5-9ebb-348f0554a088}
+
+ {dd0bb92e-0a1e-4406-96ff-5265e8d28258}
+
@@ -219,6 +222,24 @@
classes
+
+ tomcrypt
+
+
+ tomcrypt
+
+
+ tomcrypt
+
+
+ tomcrypt
+
+
+ tomcrypt
+
+
+ classes
+
@@ -536,5 +557,44 @@
headers
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
\ No newline at end of file
diff --git a/builds/win32/msvc14/common.vcxproj b/builds/win32/msvc14/common.vcxproj
index 26a2037c47..a02ed6ce87 100644
--- a/builds/win32/msvc14/common.vcxproj
+++ b/builds/win32/msvc14/common.vcxproj
@@ -45,6 +45,7 @@
+
@@ -58,6 +59,7 @@
+
@@ -87,6 +89,11 @@
+
+
+
+
+
@@ -154,6 +161,7 @@
+
@@ -192,6 +200,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -283,7 +304,7 @@
0x041d
- ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\Release\tommath.lib;%(AdditionalDependencies)
+ ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\$(Configuration)\tommath.lib;../../../extern/decNumber/lib/$(PlatformName)\$(Configuration)\decnumber.lib;%(AdditionalDependencies)
@@ -299,7 +320,7 @@
0x041d
- ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\Debug\tommath.lib;%(AdditionalDependencies)
+ ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\$(Configuration)\tommath.lib;../../../extern/decNumber/lib/$(PlatformName)\$(Configuration)\decnumber.lib;%(AdditionalDependencies)
@@ -318,7 +339,7 @@
0x041d
- ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\Release\tommath.lib;%(AdditionalDependencies)
+ ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\$(Configuration)\tommath.lib;../../../extern/decNumber/lib/$(PlatformName)\$(Configuration)\decnumber.lib;%(AdditionalDependencies)
@@ -336,7 +357,7 @@
0x041d
- ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\Debug\tommath.lib;%(AdditionalDependencies)
+ ws2_32.lib;../../../extern/libtommath/lib/$(PlatformName)\$(Configuration)\tommath.lib;../../../extern/decNumber/lib/$(PlatformName)\$(Configuration)\decnumber.lib;%(AdditionalDependencies)
diff --git a/builds/win32/msvc14/common.vcxproj.filters b/builds/win32/msvc14/common.vcxproj.filters
index fb87986102..1463f617a2 100644
--- a/builds/win32/msvc14/common.vcxproj.filters
+++ b/builds/win32/msvc14/common.vcxproj.filters
@@ -13,6 +13,9 @@
{03f83331-723e-4ba5-9ebb-348f0554a088}
+
+ {dd0bb92e-0a1e-4406-96ff-5265e8d28258}
+
@@ -216,6 +219,27 @@
common
+
+ classes
+
+
+ tomcrypt
+
+
+ tomcrypt
+
+
+ tomcrypt
+
+
+ tomcrypt
+
+
+ tomcrypt
+
+
+ classes
+
@@ -530,5 +554,47 @@
headers
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
+
+ headers
+
\ No newline at end of file
diff --git a/configure.ac b/configure.ac
index b89067f521..adf3940b3b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1264,7 +1264,6 @@ case "$PLATFORM" in
INSTALL_SRC_DIR=builds/install/arch-specific/linux
AC_CONFIG_FILES([
gen/install/makeInstallImage.sh:builds/install/arch-specific/linux/makeInstallImage.sh.in
- gen/install/misc/firebird.xinetd:builds/install/arch-specific/linux/firebird.xinetd.in
gen/install/misc/firebird.init.d.generic:builds/install/arch-specific/linux/firebird.init.d.generic.in
gen/install/misc/firebird.init.d.mandrake:builds/install/arch-specific/linux/firebird.init.d.mandrake.in
gen/install/misc/firebird.init.d.suse:builds/install/arch-specific/linux/firebird.init.d.suse.in
@@ -1273,9 +1272,7 @@ case "$PLATFORM" in
gen/install/misc/firebird.init.d.slackware:builds/install/arch-specific/linux/firebird.init.d.slackware.in
gen/install/misc/rc.config.firebird:builds/install/arch-specific/linux/rc.config.firebird.in
gen/Release/firebird/bin/linuxLibrary.sh:builds/install/arch-specific/linux/linuxLibrary.sh.in
- gen/install/misc/firebird-classic@.service:builds/install/arch-specific/linux/firebird-classic.service.in
- gen/install/misc/firebird-classic.socket:builds/install/arch-specific/linux/firebird-classic.socket.in
- gen/install/misc/firebird-superserver.service:builds/install/arch-specific/linux/firebird-superserver.service.in
+ gen/install/misc/firebird.service:builds/install/arch-specific/linux/firebird.service.in
],
[chmod a+x gen/install/*sh 2>/dev/null])
;;
diff --git a/doc/sql.extensions/README.builtin_functions.txt b/doc/sql.extensions/README.builtin_functions.txt
index 564afced79..f397d52b90 100644
--- a/doc/sql.extensions/README.builtin_functions.txt
+++ b/doc/sql.extensions/README.builtin_functions.txt
@@ -473,13 +473,21 @@ HASH
----
Function:
- Returns a HASH of a string.
+ Returns a HASH of a string using a specified algorithm.
Format:
- HASH( )
+ HASH( [ USING ] )
+
+ algorithm ::= { MD5 | SHA1 | SHA256 | SHA512 }
+
+Important:
+ - The syntax without USING is very discouraged and maintained for backward compatibility.
+ It returns a 64 bit integer and produces very bad hashes that easily result in collisions.
+ - The syntax with USING is introduced in FB 4.0 and returns VARCHAR strings with OCTETS charset.
Example:
select hash(x) from y;
+ select hash(x using sha256) from y;
----
diff --git a/doc/sql.extensions/README.subroutines.txt b/doc/sql.extensions/README.subroutines.txt
index 7077d9242b..5de6db5494 100644
--- a/doc/sql.extensions/README.subroutines.txt
+++ b/doc/sql.extensions/README.subroutines.txt
@@ -7,7 +7,7 @@ Author:
Description:
Support for PSQL subroutines (functions and procedures) inside functions, procedures, triggers
- and EXECUTE BLOCK. Subroutines are declared in the main routine and may be used from there.
+ and EXECUTE BLOCK. Subroutines are declared in the main routine and may be used from there or others subroutines.
Syntax:
::=
@@ -15,7 +15,21 @@ Syntax:
|
DECLARE [VARIABLE] CURSOR FOR ();
|
- DECLARE FUNCTION RETURNS
+
+ |
+
+
+ ::=
+ DECLARE FUNCTION [ () ]
+ RETURNS
+ [ [ NOT ] DETERMINISTIC ] ;
+ |
+ DECLARE PROCEDURE [ () ] [ RETURNS (