From: <fir...@us...> - 2014-08-12 01:22:41
|
Revision: 59970 http://sourceforge.net/p/firebird/code/59970 Author: firebirds Date: 2014-08-12 01:22:33 +0000 (Tue, 12 Aug 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-08-11 14:02:06 UTC (rev 59969) +++ firebird/trunk/ChangeLog 2014-08-12 01:22:33 UTC (rev 59970) @@ -1,3 +1,7 @@ + 2014-08-11 14:02 dimitr + M src/jrd/RuntimeStatistics.h +Regression in 3.0: trace reports UPDATES in statistics when doing INSERT into <some_table>. + 2014-08-10 20:11 dimitr M src/jrd/Attachment.cpp M src/jrd/Attachment.h Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-08-11 14:02:06 UTC (rev 59969) +++ firebird/trunk/src/jrd/build_no.h 2014-08-12 01:22:33 UTC (rev 59970) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31285 + FORMAL BUILD NUMBER:31286 */ -#define PRODUCT_VER_STRING "3.0.0.31285" -#define FILE_VER_STRING "WI-T3.0.0.31285" -#define LICENSE_VER_STRING "WI-T3.0.0.31285" -#define FILE_VER_NUMBER 3, 0, 0, 31285 +#define PRODUCT_VER_STRING "3.0.0.31286" +#define FILE_VER_STRING "WI-T3.0.0.31286" +#define LICENSE_VER_STRING "WI-T3.0.0.31286" +#define FILE_VER_NUMBER 3, 0, 0, 31286 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31285" +#define FB_BUILD_NO "31286" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-08-11 14:02:06 UTC (rev 59969) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-08-12 01:22:33 UTC (rev 59970) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31285 +BuildNum=31286 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-08-13 01:16:10
|
Revision: 59974 http://sourceforge.net/p/firebird/code/59974 Author: firebirds Date: 2014-08-13 01:16:01 +0000 (Wed, 13 Aug 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-08-12 15:10:52 UTC (rev 59973) +++ firebird/trunk/ChangeLog 2014-08-13 01:16:01 UTC (rev 59974) @@ -1,3 +1,11 @@ + 2014-08-12 15:10 alexpeshkoff + M src/include/firebird/UdrEngine.h +Fixed Mac build + + 2014-08-12 10:21 hvlad + M src/jrd/Monitoring.cpp +Avoid info duplication when statements in call stack attached to different transactions (for example: monitoring snapshot is created in autonomous transaction) + 2014-08-11 14:02 dimitr M src/jrd/RuntimeStatistics.h Regression in 3.0: trace reports UPDATES in statistics when doing INSERT into <some_table>. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-08-12 15:10:52 UTC (rev 59973) +++ firebird/trunk/src/jrd/build_no.h 2014-08-13 01:16:01 UTC (rev 59974) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31286 + FORMAL BUILD NUMBER:31288 */ -#define PRODUCT_VER_STRING "3.0.0.31286" -#define FILE_VER_STRING "WI-T3.0.0.31286" -#define LICENSE_VER_STRING "WI-T3.0.0.31286" -#define FILE_VER_NUMBER 3, 0, 0, 31286 +#define PRODUCT_VER_STRING "3.0.0.31288" +#define FILE_VER_STRING "WI-T3.0.0.31288" +#define LICENSE_VER_STRING "WI-T3.0.0.31288" +#define FILE_VER_NUMBER 3, 0, 0, 31288 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31286" +#define FB_BUILD_NO "31288" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-08-12 15:10:52 UTC (rev 59973) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-08-13 01:16:01 UTC (rev 59974) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31286 +BuildNum=31288 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-08-16 01:18:10
|
Revision: 59983 http://sourceforge.net/p/firebird/code/59983 Author: firebirds Date: 2014-08-16 01:18:06 +0000 (Sat, 16 Aug 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-08-15 15:37:13 UTC (rev 59982) +++ firebird/trunk/ChangeLog 2014-08-16 01:18:06 UTC (rev 59983) @@ -1,3 +1,102 @@ + 2014-08-15 15:37 alexpeshkoff + M src/yvalve/YObjects.h + M src/yvalve/why.cpp +Clear handle in JBlob when blob is destroyed + + 2014-08-15 15:00 dimitr + M configure.ac +Corrections for the prior commit:Explicitly distinguish between thread handle and thread id. Return LWP as thread id on Linux. + + 2014-08-15 14:59 dimitr + M src/common/ThreadStart.cpp + M src/common/ThreadStart.h + M src/jrd/CryptoManager.h + M src/jrd/Mapping.cpp + M src/jrd/jrd.cpp + M src/remote/remote.h + M src/yvalve/MasterImplementation.cpp + M src/yvalve/utl.cpp + M src/yvalve/why.cpp +Corrections for the prior commit:Explicitly distinguish between thread handle and thread id. Return LWP as thread id on Linux. + + 2014-08-15 14:20 dimitr + M builds/mac_os_x/CS/CS.pbproj/project.pbxproj + M builds/win32/msvc10/common.vcxproj + M builds/win32/msvc10/common.vcxproj.filters + M builds/win32/msvc10/engine.vcxproj + M builds/win32/msvc10/engine.vcxproj.filters + M builds/win32/msvc8/common.vcproj + M builds/win32/msvc8/engine.vcproj + M builds/win32/msvc9/common.vcproj + M builds/win32/msvc9/engine.vcproj +Cleanup and small refactoring to avoid redundancy. + + 2014-08-15 14:19 dimitr + M src/auth/SecurityDatabase/LegacyServer.cpp + M src/common/ThreadStart.cpp + M src/common/ThreadStart.h + M src/common/classes/Synchronize.cpp + M src/common/classes/locks.cpp + M src/common/fb_exception.cpp + M src/common/isc_sync.cpp + D src/common/thd.cpp + D src/common/thd.h + M src/dsql/ddl.cpp + M src/dsql/gen.cpp + M src/dsql/make.cpp + M src/dsql/metd.epp + M src/dsql/pass1.cpp + M src/include/fb_exception.h + M src/jrd/CryptoManager.cpp + M src/jrd/CryptoManager.h + M src/jrd/Database.cpp + M src/jrd/ExtEngineManager.cpp + M src/jrd/Function.epp + M src/jrd/GlobalRWLock.cpp + M src/jrd/Mapping.cpp + M src/jrd/cch.cpp + M src/jrd/dfw.epp + M src/jrd/event.cpp + M src/jrd/fun.epp + M src/jrd/jrd.cpp + M src/jrd/met.epp + M src/jrd/nbak.cpp + M src/jrd/os/pio.h + M src/jrd/pag.cpp + M src/jrd/shut.cpp + M src/jrd/sort.cpp + M src/jrd/svc.cpp + D src/jrd/thread_proto.h + M src/jrd/tra.cpp + M src/jrd/trace/TraceService.cpp + M src/jrd/validation.cpp + M src/jrd/vio.cpp + M src/lock/lock.cpp + M src/remote/inet.cpp + M src/remote/os/win32/wnet.cpp + M src/remote/os/win32/xnet.cpp + M src/remote/remote.cpp + M src/remote/remote.h + M src/remote/server/os/posix/inet_server.cpp + M src/remote/server/os/win32/cntl.cpp + M src/remote/server/os/win32/property.cpp + M src/remote/server/os/win32/window.cpp + M src/remote/server/server.cpp + M src/utilities/gstat/dba.epp + M src/yvalve/MasterImplementation.cpp + M src/yvalve/utl.cpp + M src/yvalve/why.cpp +Cleanup and small refactoring to avoid redundancy. + + 2014-08-15 13:14 alexpeshkoff + M src/yvalve/why.cpp +Cleanup + + 2014-08-15 13:08 alexpeshkoff + M src/jrd/EngineInterface.h + M src/jrd/blb.cpp +Clear handle in JBlob when blob is destroyed + 2014-08-12 15:10 alexpeshkoff M src/include/firebird/UdrEngine.h Fixed Mac build Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-08-15 15:37:13 UTC (rev 59982) +++ firebird/trunk/src/jrd/build_no.h 2014-08-16 01:18:06 UTC (rev 59983) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31288 + FORMAL BUILD NUMBER:31295 */ -#define PRODUCT_VER_STRING "3.0.0.31288" -#define FILE_VER_STRING "WI-T3.0.0.31288" -#define LICENSE_VER_STRING "WI-T3.0.0.31288" -#define FILE_VER_NUMBER 3, 0, 0, 31288 +#define PRODUCT_VER_STRING "3.0.0.31295" +#define FILE_VER_STRING "WI-T3.0.0.31295" +#define LICENSE_VER_STRING "WI-T3.0.0.31295" +#define FILE_VER_NUMBER 3, 0, 0, 31295 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31288" +#define FB_BUILD_NO "31295" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-08-15 15:37:13 UTC (rev 59982) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-08-16 01:18:06 UTC (rev 59983) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31288 +BuildNum=31295 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-08-18 01:16:24
|
Revision: 59986 http://sourceforge.net/p/firebird/code/59986 Author: firebirds Date: 2014-08-18 01:16:20 +0000 (Mon, 18 Aug 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-08-17 04:17:48 UTC (rev 59985) +++ firebird/trunk/ChangeLog 2014-08-18 01:16:20 UTC (rev 59986) @@ -1,3 +1,11 @@ + 2014-08-17 04:17 robocop + M src/common/classes/array.h +Misc. + + 2014-08-17 03:52 robocop + M src/yvalve/why.cpp +I assume this is a bug. + 2014-08-15 15:37 alexpeshkoff M src/yvalve/YObjects.h M src/yvalve/why.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-08-17 04:17:48 UTC (rev 59985) +++ firebird/trunk/src/jrd/build_no.h 2014-08-18 01:16:20 UTC (rev 59986) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31295 + FORMAL BUILD NUMBER:31297 */ -#define PRODUCT_VER_STRING "3.0.0.31295" -#define FILE_VER_STRING "WI-T3.0.0.31295" -#define LICENSE_VER_STRING "WI-T3.0.0.31295" -#define FILE_VER_NUMBER 3, 0, 0, 31295 +#define PRODUCT_VER_STRING "3.0.0.31297" +#define FILE_VER_STRING "WI-T3.0.0.31297" +#define LICENSE_VER_STRING "WI-T3.0.0.31297" +#define FILE_VER_NUMBER 3, 0, 0, 31297 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31295" +#define FB_BUILD_NO "31297" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-08-17 04:17:48 UTC (rev 59985) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-08-18 01:16:20 UTC (rev 59986) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31295 +BuildNum=31297 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-08-20 01:26:35
|
Revision: 59988 http://sourceforge.net/p/firebird/code/59988 Author: firebirds Date: 2014-08-20 01:26:32 +0000 (Wed, 20 Aug 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-08-19 09:53:42 UTC (rev 59987) +++ firebird/trunk/ChangeLog 2014-08-20 01:26:32 UTC (rev 59988) @@ -1,3 +1,7 @@ + 2014-08-19 09:53 alexpeshkoff + M src/gpre/obj_cxx.cpp +Fixed CORE-4506: Firebird server crashes when execute most of "show ..." commands after reconnect + 2014-08-17 04:17 robocop M src/common/classes/array.h Misc. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-08-19 09:53:42 UTC (rev 59987) +++ firebird/trunk/src/jrd/build_no.h 2014-08-20 01:26:32 UTC (rev 59988) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31297 + FORMAL BUILD NUMBER:31298 */ -#define PRODUCT_VER_STRING "3.0.0.31297" -#define FILE_VER_STRING "WI-T3.0.0.31297" -#define LICENSE_VER_STRING "WI-T3.0.0.31297" -#define FILE_VER_NUMBER 3, 0, 0, 31297 +#define PRODUCT_VER_STRING "3.0.0.31298" +#define FILE_VER_STRING "WI-T3.0.0.31298" +#define LICENSE_VER_STRING "WI-T3.0.0.31298" +#define FILE_VER_NUMBER 3, 0, 0, 31298 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31297" +#define FB_BUILD_NO "31298" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-08-19 09:53:42 UTC (rev 59987) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-08-20 01:26:32 UTC (rev 59988) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31297 +BuildNum=31298 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-08-21 01:22:18
|
Revision: 59991 http://sourceforge.net/p/firebird/code/59991 Author: firebirds Date: 2014-08-21 01:22:15 +0000 (Thu, 21 Aug 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-08-20 10:07:19 UTC (rev 59990) +++ firebird/trunk/ChangeLog 2014-08-21 01:22:15 UTC (rev 59991) @@ -1,3 +1,12 @@ + 2014-08-20 10:07 alexpeshkoff + M src/common/ThreadStart.cpp + M src/common/ThreadStart.h +Fixed non-linux posix builds + + 2014-08-20 09:26 alexpeshkoff + M src/gpre/obj_cxx.cpp +Postfix for CORE-4506: forgotten to release request + 2014-08-19 09:53 alexpeshkoff M src/gpre/obj_cxx.cpp Fixed CORE-4506: Firebird server crashes when execute most of "show ..." commands after reconnect Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-08-20 10:07:19 UTC (rev 59990) +++ firebird/trunk/src/jrd/build_no.h 2014-08-21 01:22:15 UTC (rev 59991) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31298 + FORMAL BUILD NUMBER:31300 */ -#define PRODUCT_VER_STRING "3.0.0.31298" -#define FILE_VER_STRING "WI-T3.0.0.31298" -#define LICENSE_VER_STRING "WI-T3.0.0.31298" -#define FILE_VER_NUMBER 3, 0, 0, 31298 +#define PRODUCT_VER_STRING "3.0.0.31300" +#define FILE_VER_STRING "WI-T3.0.0.31300" +#define LICENSE_VER_STRING "WI-T3.0.0.31300" +#define FILE_VER_NUMBER 3, 0, 0, 31300 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31298" +#define FB_BUILD_NO "31300" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-08-20 10:07:19 UTC (rev 59990) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-08-21 01:22:15 UTC (rev 59991) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31298 +BuildNum=31300 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-08-22 01:27:33
|
Revision: 59993 http://sourceforge.net/p/firebird/code/59993 Author: firebirds Date: 2014-08-22 01:27:26 +0000 (Fri, 22 Aug 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-08-21 08:00:53 UTC (rev 59992) +++ firebird/trunk/ChangeLog 2014-08-22 01:27:26 UTC (rev 59993) @@ -1,3 +1,7 @@ + 2014-08-21 08:00 alexpeshkoff + M src/jrd/Mapping.cpp +Explicitly avoid processing records about already seen databases when mapping auth info + 2014-08-20 10:07 alexpeshkoff M src/common/ThreadStart.cpp M src/common/ThreadStart.h Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-08-21 08:00:53 UTC (rev 59992) +++ firebird/trunk/src/jrd/build_no.h 2014-08-22 01:27:26 UTC (rev 59993) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31300 + FORMAL BUILD NUMBER:31301 */ -#define PRODUCT_VER_STRING "3.0.0.31300" -#define FILE_VER_STRING "WI-T3.0.0.31300" -#define LICENSE_VER_STRING "WI-T3.0.0.31300" -#define FILE_VER_NUMBER 3, 0, 0, 31300 +#define PRODUCT_VER_STRING "3.0.0.31301" +#define FILE_VER_STRING "WI-T3.0.0.31301" +#define LICENSE_VER_STRING "WI-T3.0.0.31301" +#define FILE_VER_NUMBER 3, 0, 0, 31301 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31300" +#define FB_BUILD_NO "31301" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-08-21 08:00:53 UTC (rev 59992) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-08-22 01:27:26 UTC (rev 59993) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31300 +BuildNum=31301 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-08-26 01:27:49
|
Revision: 59998 http://sourceforge.net/p/firebird/code/59998 Author: firebirds Date: 2014-08-26 01:27:46 +0000 (Tue, 26 Aug 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-08-25 14:04:50 UTC (rev 59997) +++ firebird/trunk/ChangeLog 2014-08-26 01:27:46 UTC (rev 59998) @@ -1,3 +1,17 @@ + 2014-08-25 14:04 alexpeshkoff + M examples/dbcrypt/DbCrypt.cpp +Make a dbCrypt sample a little more interesting + + 2014-08-25 13:28 dimitr + M src/jrd/Optimizer.cpp +Fixed CORE-4530: DB_KEY based join of two tables may be ineffective. + + 2014-08-25 11:35 dimitr + M src/dsql/ExprNodes.cpp + M src/dsql/ExprNodes.h + M src/jrd/opt.cpp +Attempt for CORE-4528: Allow hash/merge joins for non-field (dbkey or derived expression) equalities. + 2014-08-21 08:00 alexpeshkoff M src/jrd/Mapping.cpp Explicitly avoid processing records about already seen databases when mapping auth info Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-08-25 14:04:50 UTC (rev 59997) +++ firebird/trunk/src/jrd/build_no.h 2014-08-26 01:27:46 UTC (rev 59998) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31301 + FORMAL BUILD NUMBER:31304 */ -#define PRODUCT_VER_STRING "3.0.0.31301" -#define FILE_VER_STRING "WI-T3.0.0.31301" -#define LICENSE_VER_STRING "WI-T3.0.0.31301" -#define FILE_VER_NUMBER 3, 0, 0, 31301 +#define PRODUCT_VER_STRING "3.0.0.31304" +#define FILE_VER_STRING "WI-T3.0.0.31304" +#define LICENSE_VER_STRING "WI-T3.0.0.31304" +#define FILE_VER_NUMBER 3, 0, 0, 31304 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31301" +#define FB_BUILD_NO "31304" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-08-25 14:04:50 UTC (rev 59997) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-08-26 01:27:46 UTC (rev 59998) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31301 +BuildNum=31304 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-08-27 01:23:11
|
Revision: 60001 http://sourceforge.net/p/firebird/code/60001 Author: firebirds Date: 2014-08-27 01:23:06 +0000 (Wed, 27 Aug 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-08-26 14:16:09 UTC (rev 60000) +++ firebird/trunk/ChangeLog 2014-08-27 01:23:06 UTC (rev 60001) @@ -1,3 +1,7 @@ + 2014-08-26 14:16 dimitr + M src/common/ThreadStart.h +Quick fix for the Windows build. + 2014-08-25 14:04 alexpeshkoff M examples/dbcrypt/DbCrypt.cpp Make a dbCrypt sample a little more interesting Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-08-26 14:16:09 UTC (rev 60000) +++ firebird/trunk/src/jrd/build_no.h 2014-08-27 01:23:06 UTC (rev 60001) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31304 + FORMAL BUILD NUMBER:31305 */ -#define PRODUCT_VER_STRING "3.0.0.31304" -#define FILE_VER_STRING "WI-T3.0.0.31304" -#define LICENSE_VER_STRING "WI-T3.0.0.31304" -#define FILE_VER_NUMBER 3, 0, 0, 31304 +#define PRODUCT_VER_STRING "3.0.0.31305" +#define FILE_VER_STRING "WI-T3.0.0.31305" +#define LICENSE_VER_STRING "WI-T3.0.0.31305" +#define FILE_VER_NUMBER 3, 0, 0, 31305 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31304" +#define FB_BUILD_NO "31305" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-08-26 14:16:09 UTC (rev 60000) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-08-27 01:23:06 UTC (rev 60001) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31304 +BuildNum=31305 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ale...@us...> - 2014-08-27 09:24:44
|
Revision: 60002 http://sourceforge.net/p/firebird/code/60002 Author: alexpeshkoff Date: 2014-08-27 09:24:30 +0000 (Wed, 27 Aug 2014) Log Message: ----------- Divide IStatus information into 3 parts: errors, warnings and completion code. Errors and warnings are processed in IStatus independently. Completion code is moved away from IStatus and returned directly by appropriate functions. Replaced isSuccess() with more generic function getStatus(), which sets appropriate bits in returned value when errors/warnings are present. Also use same style when returning bytes' array and it's length in different interfaces. Modified Paths: -------------- firebird/trunk/examples/dbcrypt/CryptKeyHolder.cpp firebird/trunk/examples/dbcrypt/DbCrypt.cpp firebird/trunk/examples/interfaces/01.create.cpp firebird/trunk/examples/interfaces/02.update.cpp firebird/trunk/examples/interfaces/03.select.cpp firebird/trunk/examples/interfaces/04.print_table.cpp firebird/trunk/examples/udr/UdrCppExample.cpp firebird/trunk/src/auth/AuthDbg.cpp firebird/trunk/src/auth/SecureRemotePassword/Message.h firebird/trunk/src/auth/SecureRemotePassword/client/SrpClient.cpp firebird/trunk/src/auth/SecureRemotePassword/manage/SrpManagement.cpp firebird/trunk/src/auth/SecureRemotePassword/server/SrpServer.cpp firebird/trunk/src/auth/SecurityDatabase/LegacyClient.cpp firebird/trunk/src/auth/SecurityDatabase/LegacyManagement.epp firebird/trunk/src/auth/SecurityDatabase/LegacyServer.cpp firebird/trunk/src/common/BigInteger.cpp firebird/trunk/src/common/CsConvert.h firebird/trunk/src/common/MsgMetadata.h firebird/trunk/src/common/StatusArg.cpp firebird/trunk/src/common/StatusArg.h firebird/trunk/src/common/StatusHolder.cpp firebird/trunk/src/common/StatusHolder.h firebird/trunk/src/common/UtilSvc.cpp firebird/trunk/src/common/call_service.cpp firebird/trunk/src/common/classes/BlrReader.h firebird/trunk/src/common/classes/ImplementHelper.h firebird/trunk/src/common/cvt.cpp firebird/trunk/src/common/db_alias.cpp firebird/trunk/src/common/dsc.cpp firebird/trunk/src/common/fb_exception.cpp firebird/trunk/src/common/isc.cpp firebird/trunk/src/common/isc_proto.h firebird/trunk/src/common/os/os_utils.h firebird/trunk/src/common/unicode_util.cpp firebird/trunk/src/common/utils.cpp firebird/trunk/src/common/utils_proto.h firebird/trunk/src/dsql/DdlNodes.epp firebird/trunk/src/dsql/dsql.cpp firebird/trunk/src/gpre/obj_cxx.cpp firebird/trunk/src/include/fb_exception.h firebird/trunk/src/include/fb_types.h firebird/trunk/src/include/firebird/Auth.h firebird/trunk/src/include/firebird/Interface.h firebird/trunk/src/include/firebird/Provider.h firebird/trunk/src/include/firebird/UdrCppEngine.h firebird/trunk/src/isql/extract.epp firebird/trunk/src/isql/isql.epp firebird/trunk/src/isql/show.epp firebird/trunk/src/jrd/CryptoManager.cpp firebird/trunk/src/jrd/Database.cpp firebird/trunk/src/jrd/EngineInterface.h firebird/trunk/src/jrd/Mapping.cpp firebird/trunk/src/jrd/UserManagement.cpp firebird/trunk/src/jrd/extds/ExtDS.cpp firebird/trunk/src/jrd/extds/InternalDS.cpp firebird/trunk/src/jrd/jrd.cpp firebird/trunk/src/jrd/jrd.h firebird/trunk/src/jrd/tra.cpp firebird/trunk/src/jrd/trace/TraceManager.cpp firebird/trunk/src/plugins/udr_engine/UdrEngine.cpp firebird/trunk/src/remote/client/interface.cpp firebird/trunk/src/remote/inet.cpp firebird/trunk/src/remote/remote.cpp firebird/trunk/src/remote/remote.h firebird/trunk/src/remote/server/server.cpp firebird/trunk/src/utilities/fbsvcmgr/fbsvcmgr.cpp firebird/trunk/src/utilities/gsec/gsec.cpp firebird/trunk/src/yvalve/DistributedTransaction.cpp firebird/trunk/src/yvalve/PluginManager.cpp firebird/trunk/src/yvalve/YObjects.h firebird/trunk/src/yvalve/perf.cpp firebird/trunk/src/yvalve/preparse.cpp firebird/trunk/src/yvalve/utl.cpp firebird/trunk/src/yvalve/why.cpp Modified: firebird/trunk/examples/dbcrypt/CryptKeyHolder.cpp =================================================================== --- firebird/trunk/examples/dbcrypt/CryptKeyHolder.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/examples/dbcrypt/CryptKeyHolder.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -197,7 +197,7 @@ vector[2] = isc_arg_string; vector[3] = (ISC_STATUS) "Key not set"; vector[4] = isc_arg_end; - status->set(vector); + status->setErrors(vector); } int FB_CARG CryptKeyHolder::keyCallback(IStatus* status, ICryptKeyCallback* callback) @@ -208,12 +208,12 @@ return 1; IConfig* def = config->getDefaultConfig(status); - if (!status->isSuccess()) + if (status->getStatus() & Firebird::IStatus::FB_HAS_ERRORS) return 1; IConfigEntry* confEntry = def->find(status, "Auto"); def->release(); - if (!status->isSuccess()) + if (status->getStatus() & Firebird::IStatus::FB_HAS_ERRORS) return 1; if (confEntry) Modified: firebird/trunk/examples/dbcrypt/DbCrypt.cpp =================================================================== --- firebird/trunk/examples/dbcrypt/DbCrypt.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/examples/dbcrypt/DbCrypt.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -152,7 +152,7 @@ vector[2] = isc_arg_string; vector[3] = (ISC_STATUS)"Key not set"; vector[4] = isc_arg_end; - status->set(vector); + status->setErrors(vector); } void FB_CARG DbCrypt::encrypt(IStatus* status, unsigned int length, const void* from, void* to) @@ -201,11 +201,11 @@ return; IConfig* def = config->getDefaultConfig(status); - if (!status->isSuccess()) + if (status->getStatus() & Firebird::IStatus::FB_HAS_ERRORS) return; IConfigEntry* confEntry = def->find(status, "Auto"); - if (!status->isSuccess()) + if (status->getStatus() & Firebird::IStatus::FB_HAS_ERRORS) { def->release(); return; @@ -238,7 +238,7 @@ for (unsigned n = 0; n < length; ++n) { ICryptKeyCallback* callback = sources[n]->keyHandle(status, "sample"); - if (!status->isSuccess()) + if (status->getStatus() & Firebird::IStatus::FB_HAS_ERRORS) return; if (callback && callback->callback(0, NULL, 1, &key) == 1) Modified: firebird/trunk/examples/interfaces/01.create.cpp =================================================================== --- firebird/trunk/examples/interfaces/01.create.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/examples/interfaces/01.create.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -49,7 +49,7 @@ // Probably not best way of error processing, but it's OK for a sample static void check(IStatus* s, const char* text) { - if (!s->isSuccess()) + if (s->getStatus() & IStatus::FB_HAS_ERRORS) throw text; } @@ -141,7 +141,7 @@ rc = 1; fprintf(stderr, "%s:\n", text); if (st) - isc_print_status(st->get()); + isc_print_status(st->getErrors()); } // release interfaces after error caught Modified: firebird/trunk/examples/interfaces/02.update.cpp =================================================================== --- firebird/trunk/examples/interfaces/02.update.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/examples/interfaces/02.update.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -55,7 +55,7 @@ static void check(IStatus* s, const char* text) { - if (!s->isSuccess()) + if (s->getStatus() & IStatus::FB_HAS_ERRORS) throw text; } @@ -152,9 +152,9 @@ // Update the budget. stmt->execute(st, tra, meta, buffer, NULL, NULL); - if (!st->isSuccess()) + if (st->getStatus() & IStatus::FB_HAS_ERRORS) { - int sqlcode = isc_sqlcode(st->get()); + int sqlcode = isc_sqlcode(st->getErrors()); // Don't save the update, if the new budget exceeds the limit. if (sqlcode == -625) { @@ -198,7 +198,7 @@ rc = 1; fprintf(stderr, "%s:\n", text); if (st) - isc_print_status(st->get()); + isc_print_status(st->getErrors()); } // release interfaces after error caught Modified: firebird/trunk/examples/interfaces/03.select.cpp =================================================================== --- firebird/trunk/examples/interfaces/03.select.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/examples/interfaces/03.select.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -46,7 +46,7 @@ static void check(IStatus* s, const char* text) { - if (!s->isSuccess()) + if (s->getStatus() & IStatus::FB_HAS_ERRORS) throw text; } @@ -156,7 +156,7 @@ unsigned char* buffer = new unsigned char[l]; // fetch records from cursor and print them - while (curs->fetchNext(st, buffer)) + while (curs->fetchNext(st, buffer) == IStatus::FB_OK) { for (unsigned j = 0; j < cols; ++j) { @@ -196,7 +196,7 @@ rc = 1; fprintf(stderr, "%s:\n", text); if (st) - isc_print_status(st->get()); + isc_print_status(st->getErrors()); } // release interfaces after error caught Modified: firebird/trunk/examples/interfaces/04.print_table.cpp =================================================================== --- firebird/trunk/examples/interfaces/04.print_table.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/examples/interfaces/04.print_table.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -45,7 +45,7 @@ static void check(IStatus* s, const char* text) { - if (!s->isSuccess()) + if (s->getStatus() & IStatus::FB_HAS_ERRORS) throw text; } @@ -157,7 +157,7 @@ unsigned char* buffer = new unsigned char[l]; // fetch records from cursor - while (curs->fetchNext(st, buffer)) + while (curs->fetchNext(st, buffer) == IStatus::FB_OK) { for (unsigned j = 0; j < f; ++j) { @@ -190,7 +190,7 @@ fflush(stdout); fprintf(stderr, " %s:\n", text); if (st) - isc_print_status(st->get()); + isc_print_status(st->getErrors()); } if (meta) @@ -260,15 +260,14 @@ char segbuf[16]; unsigned len; // read data segment by segment - while ( (len = blob->getSegment(st, sizeof(segbuf), segbuf)) ) + for(;;) { - // to be reviewed after A1 - need better segment/eof handling - if (st->get()[1] != isc_segment) - check(st, "getSegment"); + int cc = blob->getSegment(st, sizeof(segbuf), segbuf, &len); + if (cc != IStatus::FB_OK && cc != IStatus::FB_SEGMENT) + break; fwrite(segbuf, sizeof(char), len, stdout); } - if (st->get()[1] != isc_segstr_eof) - check(st, "getSegment"); + check(st, "getSegment"); // close BLOB after receiving all data blob->close(st); Modified: firebird/trunk/examples/udr/UdrCppExample.cpp =================================================================== --- firebird/trunk/examples/udr/UdrCppExample.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/examples/udr/UdrCppExample.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -676,7 +676,7 @@ // This will not work if the table has computed fields. stmt->execute(status, transaction, triggerMetadata, newFields, NULL, NULL); - StatusException::check(status->get()); + StatusException::check(status->getErrors()); } AutoRelease<IMessageMetadata> triggerMetadata; @@ -785,7 +785,7 @@ ITransaction* transaction = StatusException::check(status, context->getTransaction(status)); stmt->execute(status, transaction, triggerMetadata, newFields, NULL, NULL); - StatusException::check(status->get()); + StatusException::check(status->getErrors()); } AutoRelease<IMessageMetadata> triggerMetadata; Modified: firebird/trunk/src/auth/AuthDbg.cpp =================================================================== --- firebird/trunk/src/auth/AuthDbg.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/auth/AuthDbg.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -86,7 +86,7 @@ fprintf(stderr, "DebugServer::authenticate1: %s\n", str.c_str()); #endif sb->putData(status, str.length(), str.c_str()); - if (!status->isSuccess()) + if (status->getStatus() & Firebird::IStatus::FB_HAS_ERRORS) { return AUTH_FAILED; } @@ -167,7 +167,7 @@ fprintf(stderr, "DebugClient::authenticate: sending %s\n", str.c_str()); #endif cb->putData(status, str.length(), str.c_str()); - if (! status->isSuccess()) + if (status->getStatus() & Firebird::IStatus::FB_HAS_ERRORS) { return AUTH_FAILED; } Modified: firebird/trunk/src/auth/SecureRemotePassword/Message.h =================================================================== --- firebird/trunk/src/auth/SecureRemotePassword/Message.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/auth/SecureRemotePassword/Message.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -27,9 +27,9 @@ { Firebird::LocalStatus st; Firebird::IMessageMetadata* m = out ? stmt->getOutputMetadata(&st) : stmt->getInputMetadata(&st); - if (!st.isSuccess()) + if (st.getStatus() & Firebird::IStatus::FB_HAS_ERRORS) { - Firebird::status_exception::raise(st.get()); + Firebird::status_exception::raise(&st); } assignRefNoIncr(m); } @@ -171,13 +171,13 @@ static void check(Firebird::IStatus* status) { - if (!status->isSuccess()) + if (status->getStatus() & Firebird::IStatus::FB_HAS_ERRORS) { #ifdef INTERNAL_FIREBIRD - Firebird::status_exception::raise(status->get()); + Firebird::status_exception::raise(status); #else char s[100]; - const ISC_STATUS* st = status->get(); + const ISC_STATUS* st = status->getErrors(); fb_interpret(s, sizeof(s), &st); fatalErrorHandler(s); #endif Modified: firebird/trunk/src/auth/SecureRemotePassword/client/SrpClient.cpp =================================================================== --- firebird/trunk/src/auth/SecureRemotePassword/client/SrpClient.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/auth/SecureRemotePassword/client/SrpClient.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -75,7 +75,7 @@ client->genClientKey(data); dumpIt("Clnt: clientPubKey", data); cb->putData(status, data.length(), data.begin()); - return status->isSuccess() ? AUTH_MORE_DATA : AUTH_FAILED; + return status->getStatus() & IStatus::FB_HAS_ERRORS ? AUTH_FAILED : AUTH_MORE_DATA; } HANDSHAKE_DEBUG(fprintf(stderr, "Cli: SRP phase2\n")); @@ -125,7 +125,7 @@ cProof.getText(data); cb->putData(status, data.length(), data.c_str()); - if (!status->isSuccess()) + if (status->getStatus() & IStatus::FB_HAS_ERRORS) { return AUTH_FAILED; } @@ -133,7 +133,7 @@ // output the key FbCryptKey cKey = {"Symmetric", sessionKey.begin(), NULL, sessionKey.getCount(), 0}; cb->putKey(status, &cKey); - if (!status->isSuccess()) + if (status->getStatus() & IStatus::FB_HAS_ERRORS) { return AUTH_FAILED; } Modified: firebird/trunk/src/auth/SecureRemotePassword/manage/SrpManagement.cpp =================================================================== --- firebird/trunk/src/auth/SecureRemotePassword/manage/SrpManagement.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/auth/SecureRemotePassword/manage/SrpManagement.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -153,7 +153,7 @@ selGrantor.c_str(), SQL_DIALECT_V6, NULL, NULL, out.getMetadata(), NULL); check(&s); - bool hasGrant = curs->fetchNext(&s, out.getBuffer()); + bool hasGrant = curs->fetchNext(&s, out.getBuffer()) == Firebird::IStatus::FB_OK; curs->close(&s); check(&s); @@ -212,8 +212,8 @@ Firebird::ClumpletWriter dpb(Firebird::ClumpletReader::dpbList, MAX_DPB_SIZE); dpb.insertByte(isc_dpb_sec_attach, TRUE); - const unsigned char* authBlock; - unsigned int authBlockSize = logonInfo->authBlock(&authBlock); + unsigned int authBlockSize; + const unsigned char* authBlock = logonInfo->authBlock(&authBlockSize); const char* str = logonInfo->role(); if (str && str[0]) @@ -297,16 +297,16 @@ for (unsigned repeat = 0; ; ++repeat) { stmt = att->prepare(status, tra, 0, insert, SQL_DIALECT_V6, Firebird::IStatement::PREPARE_PREFETCH_METADATA); - if (status->isSuccess()) + if (!(status->getStatus() & Firebird::IStatus::FB_HAS_ERRORS)) { break; } else if (repeat > 0) { - Firebird::status_exception::raise(status->get()); + Firebird::status_exception::raise(status); } - if (fb_utils::containsErrorCode(status->get(), isc_dsql_relation_err)) + if (fb_utils::containsErrorCode(status->getErrors(), isc_dsql_relation_err)) { prepareDataStructures(); tra->commit(status); @@ -562,7 +562,7 @@ (par ? par->getBuffer() : NULL), om); check(status); - while (rs->fetchNext(status, di.getBuffer())) + while (rs->fetchNext(status, di.getBuffer()) == Firebird::IStatus::FB_OK) { listField(user->userName(), login); listField(user->firstName(), first); @@ -613,7 +613,7 @@ if (tra) { tra->commit(status); - if (status->isSuccess()) + if (!(status->getStatus() & Firebird::IStatus::FB_HAS_ERRORS)) { tra = NULL; } @@ -625,7 +625,7 @@ if (tra) { tra->rollback(status); - if (status->isSuccess()) + if (!(status->getStatus() & Firebird::IStatus::FB_HAS_ERRORS)) { tra = NULL; } @@ -641,7 +641,7 @@ if (att) { att->detach(&status); - if (status.isSuccess()) + if (!(status.getStatus() & Firebird::IStatus::FB_HAS_ERRORS)) { att = NULL; } @@ -690,10 +690,10 @@ static void check(Firebird::IStatus* status) { - if (!status->isSuccess()) + if (status->getStatus() & Firebird::IStatus::FB_HAS_ERRORS) { - checkStatusVectorForMissingTable(status->get()); - Firebird::status_exception::raise(status->get()); + checkStatusVectorForMissingTable(status->getErrors()); + Firebird::status_exception::raise(status); } } @@ -841,14 +841,14 @@ char segbuf[256]; unsigned len; - while ( (len = blob->getSegment(&st, sizeof(segbuf), segbuf)) ) + for (;;) { - if (st.get()[1] != isc_segment) - check(&st); + int cc = blob->getSegment(&st, sizeof(segbuf), segbuf, &len); + check(&st); + if (cc == Firebird::IStatus::FB_EOF) + break; s.append(segbuf, len); } - if (st.get()[1] != isc_segstr_eof) - check(&st); blob->close(&st); check(&st); Modified: firebird/trunk/src/auth/SecureRemotePassword/server/SrpServer.cpp =================================================================== --- firebird/trunk/src/auth/SecureRemotePassword/server/SrpServer.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/auth/SecureRemotePassword/server/SrpServer.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -133,10 +133,7 @@ const char* providers = "Providers=" CURRENT_ENGINE; dpb.insertString(isc_dpb_config, providers, fb_strlen(providers)); att = p->attachDatabase(status, secDbName, dpb.getBufferLength(), dpb.getBuffer()); - if (!status->isSuccess()) - { - status_exception::raise(status->get()); - } + check(status); HANDSHAKE_DEBUG(fprintf(stderr, "Srv SRP: attached sec db %s\n", secDbName)); const UCHAR tpb[] = @@ -148,19 +145,16 @@ isc_tpb_wait }; tra = att->startTransaction(status, sizeof(tpb), tpb); - if (!status->isSuccess()) - { - status_exception::raise(status->get()); - } + check(status); HANDSHAKE_DEBUG(fprintf(stderr, "Srv: SRP1: started transaction\n")); const char* sql = "SELECT PLG$VERIFIER, PLG$SALT FROM PLG$SRP WHERE PLG$USER_NAME = ? AND PLG$ACTIVE"; stmt = att->prepare(status, tra, 0, sql, 3, IStatement::PREPARE_PREFETCH_METADATA); - if (!status->isSuccess()) + if (status->getStatus() & IStatus::FB_HAS_ERRORS) { - checkStatusVectorForMissingTable(status->get()); - status_exception::raise(status->get()); + checkStatusVectorForMissingTable(status->getErrors()); + status_exception::raise(status); } Meta im(stmt, false); @@ -170,20 +164,14 @@ Meta om(stmt, true); Message dat(om); - if (!status->isSuccess()) - { - status_exception::raise(status->get()); - } + check(status); Field<Varying> verify(dat); Field<Varying> slt(dat); HANDSHAKE_DEBUG(fprintf(stderr, "Srv: SRP1: Ready to run statement with login '%s'\n", account.c_str())); stmt->execute(status, tra, par.getMetadata(), par.getBuffer(), dat.getMetadata(), dat.getBuffer()); - if (!status->isSuccess()) - { - status_exception::raise(status->get()); - } + check(status); HANDSHAKE_DEBUG(fprintf(stderr, "Srv: SRP1: Executed statement\n")); verifier.assign(reinterpret_cast<const UCHAR*>((const char*) verify), RemotePassword::SRP_VERIFIER_SIZE); @@ -194,24 +182,15 @@ dumpIt("Srv: salt", salt); stmt->free(status); - if (!status->isSuccess()) - { - status_exception::raise(status->get()); - } + check(status); stmt = NULL; tra->rollback(status); - if (!status->isSuccess()) - { - status_exception::raise(status->get()); - } + check(status); tra = NULL; att->detach(status); - if (!status->isSuccess()) - { - status_exception::raise(status->get()); - } + check(status); att = NULL; } catch(const Exception&) @@ -241,7 +220,7 @@ dumpIt("Srv: serverPubKey", serverPubKey); dumpBin("Srv: data", data); sb->putData(status, data.length(), data.c_str()); - if (!status->isSuccess()) + if (status->getStatus() & IStatus::FB_HAS_ERRORS) { return AUTH_FAILED; } @@ -252,7 +231,7 @@ // output the key FbCryptKey cKey = {"Symmetric", sessionKey.begin(), NULL, sessionKey.getCount(), 0}; sb->putKey(status, &cKey); - if (!status->isSuccess()) + if (status->getStatus() & IStatus::FB_HAS_ERRORS) { return AUTH_FAILED; } @@ -271,12 +250,12 @@ { MasterInterfacePtr()->upgradeInterface(writerInterface, FB_AUTH_WRITER_VERSION, upInfo); writerInterface->add(status, account.c_str()); - if (!status->isSuccess()) + if (status->getStatus() & IStatus::FB_HAS_ERRORS) { return AUTH_FAILED; } writerInterface->setDb(status, secDbName); - if (!status->isSuccess()) + if (status->getStatus() & IStatus::FB_HAS_ERRORS) { return AUTH_FAILED; } Modified: firebird/trunk/src/auth/SecurityDatabase/LegacyClient.cpp =================================================================== --- firebird/trunk/src/auth/SecurityDatabase/LegacyClient.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/auth/SecurityDatabase/LegacyClient.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -46,7 +46,7 @@ TEXT pwt[Auth::MAX_LEGACY_PASSWORD_LENGTH + 2]; ENC_crypt(pwt, sizeof pwt, cb->getPassword(), Auth::LEGACY_PASSWORD_SALT); cb->putData(status, static_cast<unsigned>(strlen(&pwt[2])), &pwt[2]); - if (! status->isSuccess()) + if (status->getStatus() & Firebird::IStatus::FB_HAS_ERRORS) { return AUTH_FAILED; } Modified: firebird/trunk/src/auth/SecurityDatabase/LegacyManagement.epp =================================================================== --- firebird/trunk/src/auth/SecurityDatabase/LegacyManagement.epp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/auth/SecurityDatabase/LegacyManagement.epp 2014-08-27 09:24:30 UTC (rev 60002) @@ -135,8 +135,8 @@ Firebird::ClumpletWriter dpb(Firebird::ClumpletReader::dpbList, MAX_DPB_SIZE); dpb.insertByte(isc_dpb_sec_attach, TRUE); - const unsigned char* authBlock; - unsigned int authBlockSize = logonInfo->authBlock(&authBlock); + unsigned int authBlockSize; + const unsigned char* authBlock = logonInfo->authBlock(&authBlockSize); if (authBlockSize) dpb.insertBytes(isc_dpb_auth_block, authBlock, authBlockSize); @@ -747,7 +747,7 @@ } } - st->set(isc_status); + fb_utils::setIStatus(st, isc_status); } catch (const Firebird::Exception& ex) { Modified: firebird/trunk/src/auth/SecurityDatabase/LegacyServer.cpp =================================================================== --- firebird/trunk/src/auth/SecurityDatabase/LegacyServer.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/auth/SecurityDatabase/LegacyServer.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -509,7 +509,7 @@ #ifdef USE_ATT_RQ_CACHE LocalStatus s; TimerInterfacePtr()->start(&s, instance, 10 * 1000 * 1000); - if (!s.isSuccess()) + if (s.getStatus() & IStatus::FB_HAS_ERRORS) instance->handler(); #else instance->handler(); Modified: firebird/trunk/src/common/BigInteger.cpp =================================================================== --- firebird/trunk/src/common/BigInteger.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/BigInteger.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -33,6 +33,7 @@ #include "../common/BigInteger.h" #include "../common/os/guid.h" +#include "../common/StatusArg.h" #define CHECK_MP(a) check(a, #a) Modified: firebird/trunk/src/common/CsConvert.h =================================================================== --- firebird/trunk/src/common/CsConvert.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/CsConvert.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -32,6 +32,7 @@ #include "iberror.h" #include "../common/classes/array.h" +#include "../common/StatusArg.h" namespace Jrd { Modified: firebird/trunk/src/common/MsgMetadata.h =================================================================== --- firebird/trunk/src/common/MsgMetadata.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/MsgMetadata.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -267,8 +267,8 @@ private: void raiseIndexError(IStatus* status, unsigned index, const char* method) const { - status->set((Arg::Gds(isc_invalid_index_val) << - Arg::Num(index) << (string("IMessageMetadata::") + method)).value()); + (Arg::Gds(isc_invalid_index_val) << + Arg::Num(index) << (string("IMessageMetadata::") + method)).copyTo(status); } void assign(IMessageMetadata* from); Modified: firebird/trunk/src/common/StatusArg.cpp =================================================================== --- firebird/trunk/src/common/StatusArg.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/StatusArg.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -53,7 +53,7 @@ namespace Arg { -Base::Base(ISC_STATUS k, ISC_STATUS c) : +Base::Base(ISC_STATUS k, ISC_STATUS c) throw(Firebird::BadAlloc) : implementation(FB_NEW(*getDefaultMemoryPool()) ImplBase(k, c)) { } @@ -70,18 +70,36 @@ } } -StatusVector::StatusVector(ISC_STATUS k, ISC_STATUS c) : +StatusVector::ImplStatusVector::ImplStatusVector(const IStatus* s) throw() : Base::ImplBase(0, 0) +{ + fb_assert(s); + + clear(); + // special case - empty IStatus + if (s->getStatus() != 0) + { + append(s->getErrors(), FB_NELEM(m_status_vector) - 1); + append(s->getWarnings(), FB_NELEM(m_status_vector) - 1); + } +} + +StatusVector::StatusVector(ISC_STATUS k, ISC_STATUS c) throw(Firebird::BadAlloc) : Base(FB_NEW(*getDefaultMemoryPool()) ImplStatusVector(k, c)) { operator<<(*(static_cast<Base*>(this))); } -StatusVector::StatusVector(const ISC_STATUS* s) : +StatusVector::StatusVector(const ISC_STATUS* s) throw(Firebird::BadAlloc) : Base(FB_NEW(*getDefaultMemoryPool()) ImplStatusVector(s)) { } -StatusVector::StatusVector() : +StatusVector::StatusVector(const IStatus* s) throw(Firebird::BadAlloc) : + Base(FB_NEW(*getDefaultMemoryPool()) ImplStatusVector(s)) +{ +} + +StatusVector::StatusVector() throw(Firebird::BadAlloc) : Base(FB_NEW(*getDefaultMemoryPool()) ImplStatusVector(0, 0)) { } @@ -150,6 +168,19 @@ fb_utils::copyStatus(&m_status_vector[m_length], FB_NELEM(m_status_vector) - m_length, from, count); m_length += copied; + if (!m_warning) + { + for (unsigned n = 0; n < m_length; ) + { + if (m_status_vector[n] == isc_arg_warning) + { + m_warning = n; + break; + } + n += (m_status_vector[n] == isc_arg_cstring) ? 3 : 2; + } + } + return copied == count; } @@ -212,16 +243,23 @@ ISC_STATUS StatusVector::ImplStatusVector::copyTo(IStatus* dest) const throw() { + dest->init(); if (hasData()) { - dest->set(length() + 1u, value()); + const ISC_STATUS* v = m_status_vector; + unsigned int length = m_length; + unsigned int warning = m_warning; + + if (v[warning] == isc_arg_warning) + { + dest->setWarnings(length - warning, &v[warning]); + if (warning) + dest->setErrors(warning, v); + } + else + dest->setErrors(length, v); } - else - { - ISC_STATUS t[3] = {isc_arg_gds, FB_SUCCESS, isc_arg_end}; - dest->set(3, t); - } - return dest->get()[1]; + return m_status_vector[1]; } Gds::Gds(ISC_STATUS s) throw() : Modified: firebird/trunk/src/common/StatusArg.h =================================================================== --- firebird/trunk/src/common/StatusArg.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/StatusArg.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -29,6 +29,8 @@ #ifndef FB_STATUS_ARG #define FB_STATUS_ARG +#include "fb_exception.h" + namespace Firebird { class IStatus; @@ -82,9 +84,9 @@ virtual ~ImplBase() { } }; - Base(ISC_STATUS k, ISC_STATUS c);// : implementation(new ImplBase(k, c)) { } + Base(ISC_STATUS k, ISC_STATUS c) throw(Firebird::BadAlloc); explicit Base(ImplBase* i) throw() : implementation(i) { } - ~Base() { delete implementation; } + ~Base() throw() { delete implementation; } ImplBase* const implementation; @@ -130,13 +132,15 @@ } explicit ImplStatusVector(const ISC_STATUS* s) throw(); + explicit ImplStatusVector(const IStatus* s) throw(); }; - StatusVector(ISC_STATUS k, ISC_STATUS v); + StatusVector(ISC_STATUS k, ISC_STATUS v) throw(Firebird::BadAlloc); public: - explicit StatusVector(const ISC_STATUS* s); - StatusVector(); + explicit StatusVector(const ISC_STATUS* s) throw(Firebird::BadAlloc); + explicit StatusVector(const IStatus* s) throw(Firebird::BadAlloc); + StatusVector() throw(Firebird::BadAlloc); ~StatusVector() { } const ISC_STATUS* value() const throw() { return implementation->value(); } Modified: firebird/trunk/src/common/StatusHolder.cpp =================================================================== --- firebird/trunk/src/common/StatusHolder.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/StatusHolder.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -90,6 +90,13 @@ return m_status_vector[1]; } +ISC_STATUS DynamicStatusVector::save(const IStatus* status) +{ + ISC_STATUS_ARRAY tmp; + fb_utils::mergeStatus(tmp, FB_NELEM(tmp), status); + return save(tmp); +} + void DynamicStatusVector::clear() { ISC_STATUS *ptr = m_status_vector.begin(); @@ -129,7 +136,7 @@ fb_utils::init_status(m_status_vector.begin()); } -ISC_STATUS StatusHolder::save(const ISC_STATUS* status) +ISC_STATUS StatusHolder::save(IStatus* status) { fb_assert(isSuccess() || m_raised); if (m_raised) @@ -137,12 +144,15 @@ clear(); } - return m_status_vector.save(status); + m_error.save(status->getErrors()); + m_warning.save(status->getWarnings()); + return m_error.value()[1]; } void StatusHolder::clear() { - m_status_vector.clear(); + m_error.clear(); + m_warning.clear(); m_raised = false; } @@ -150,8 +160,10 @@ { if (getError()) { + Arg::StatusVector tmp(m_error.value()); + tmp << Arg::StatusVector(m_warning.value()); m_raised = true; - status_exception::raise(m_status_vector.value()); + tmp.raise(); } } Modified: firebird/trunk/src/common/StatusHolder.h =================================================================== --- firebird/trunk/src/common/StatusHolder.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/StatusHolder.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -40,45 +40,93 @@ { public: // IStatus implementation - virtual void FB_CARG set(const ISC_STATUS* value) + virtual void FB_CARG init() { - set(fb_utils::statusLength(value), value); + errors.init(); + warnings.init(); } - virtual void FB_CARG set(unsigned int length, const ISC_STATUS* value) + virtual void FB_CARG setErrors(const ISC_STATUS* value) { - fb_utils::copyStatus(vector, FB_NELEM(vector), value, length); + errors.set(fb_utils::statusLength(value), value); } - virtual void FB_CARG init() + virtual void FB_CARG setErrors(unsigned int length, const ISC_STATUS* value) { - fb_utils::init_status(vector); + errors.set(length, value); } - virtual const ISC_STATUS* FB_CARG get() const + virtual void FB_CARG setWarnings(const ISC_STATUS* value) { - return vector; + warnings.set(fb_utils::statusLength(value), value); } - virtual int FB_CARG isSuccess() const + virtual void FB_CARG setWarnings(unsigned int length, const ISC_STATUS* value) { - return vector[1] == 0; + warnings.set(length, value); } -public: - BaseStatus() + virtual const ISC_STATUS* FB_CARG getErrors() const { - init(); + return errors.get(); } + virtual const ISC_STATUS* FB_CARG getWarnings() const + { + return warnings.get(); + } + + virtual unsigned FB_CARG getStatus() const + { + return (errors.vector[1] ? FB_HAS_ERRORS : 0) | + (warnings.vector[1] ? FB_HAS_WARNINGS : 0); + } + +public: + BaseStatus() + { } + void check() { - if (!isSuccess()) - status_exception::raise(get()); + errors.check(); } private: - ISC_STATUS vector[40]; // FixMe - may be a kind of dynamic storage will be better? + class ErrorVector + { + public: + ErrorVector() + { + init(); + } + + ~ErrorVector() { } + + void set(unsigned int length, const ISC_STATUS* value) + { + fb_utils::copyStatus(vector, FB_NELEM(vector), value, length); + } + + virtual const ISC_STATUS* FB_CARG get() const + { + return vector; + } + + virtual void FB_CARG init() + { + fb_utils::init_status(vector); + } + + void check() + { + if (vector[1]) + status_exception::raise(get()); + } + + ISC_STATUS vector[40]; // FixMe - may be a kind of dynamic storage will be better? + }; + + ErrorVector errors, warnings; }; class LocalStatus : public AutoIface<BaseStatus, FB_STATUS_VERSION> @@ -97,16 +145,11 @@ class DynamicStatusVector { public: - explicit DynamicStatusVector(const ISC_STATUS* status = NULL) + DynamicStatusVector() : m_status_vector(*getDefaultMemoryPool()) { ISC_STATUS* s = m_status_vector.getBuffer(ISC_STATUS_LENGTH); fb_utils::init_status(s); - - if (status) - { - save(status); - } } ~DynamicStatusVector() @@ -115,8 +158,10 @@ } ISC_STATUS save(const ISC_STATUS* status); + ISC_STATUS save(const IStatus* status); void clear(); + ISC_STATUS getError() const { return value()[1]; @@ -145,25 +190,29 @@ class StatusHolder { public: - explicit StatusHolder(const ISC_STATUS* status = NULL) - : m_status_vector(status), m_raised(false) + StatusHolder() + : m_raised(false) { } - ISC_STATUS save(const ISC_STATUS* status); + ISC_STATUS save(IStatus* status); void clear(); void raise(); ISC_STATUS getError() { - return value()[1]; + return value()->getErrors()[1]; } - const ISC_STATUS* value() + const IStatus* value() { if (m_raised) { clear(); } - return m_status_vector.value(); + + m_rc.init(); + m_rc.setErrors(m_error.value()); + m_rc.setWarnings(m_warning.value()); + return &m_rc; } bool isSuccess() @@ -171,8 +220,17 @@ return getError() == 0; } + const StatusHolder& operator=(const StatusHolder& val) + { + m_error.save(val.m_error.value()); + m_warning.save(val.m_warning.value()); + m_raised = val.m_raised; + return *this; + } + private: - DynamicStatusVector m_status_vector; + DynamicStatusVector m_error, m_warning; + LocalStatus m_rc; bool m_raised; }; Modified: firebird/trunk/src/common/UtilSvc.cpp =================================================================== --- firebird/trunk/src/common/UtilSvc.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/UtilSvc.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -30,6 +30,7 @@ #include "firebird.h" #include "../common/UtilSvc.h" #include "../common/classes/alloc.h" +#include "../common/StatusArg.h" #include "iberror.h" #include <string.h> Modified: firebird/trunk/src/common/call_service.cpp =================================================================== --- firebird/trunk/src/common/call_service.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/call_service.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -334,7 +334,7 @@ setAttr(attr, "Uid", &u->u); setAttr(attr, "Gid", &u->g); u->attributes()->set(status, attr.c_str()); - if (!status->isSuccess()) + if (status->getStatus() && IStatus::FB_HAS_ERRORS) return; u->attributes()->setEntered(status, attr.hasData()); } Modified: firebird/trunk/src/common/classes/BlrReader.h =================================================================== --- firebird/trunk/src/common/classes/BlrReader.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/classes/BlrReader.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -24,6 +24,7 @@ #define COMMON_CLASSES_BLR_READER_H #include "iberror.h" +#include "../common/StatusArg.h" namespace Firebird { Modified: firebird/trunk/src/common/classes/ImplementHelper.h =================================================================== --- firebird/trunk/src/common/classes/ImplementHelper.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/classes/ImplementHelper.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -38,6 +38,7 @@ #include "../common/classes/init.h" #include "../common/classes/auto.h" #include "../common/classes/RefCounted.h" +#include "../common/StatusArg.h" #include "consts_pub.h" namespace Firebird { @@ -368,9 +369,9 @@ // Generic status checker inline void check(IStatus* status) { - if (!status->isSuccess()) + if (status->getStatus() & IStatus::FB_HAS_ERRORS) { - status_exception::raise(status->get()); + status_exception::raise(status); } } Modified: firebird/trunk/src/common/cvt.cpp =================================================================== --- firebird/trunk/src/common/cvt.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/cvt.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -50,6 +50,7 @@ #include "../common/classes/FpeControl.h" #include "../common/dsc_proto.h" #include "../common/utils_proto.h" +#include "../common/StatusArg.h" #ifdef HAVE_SYS_TYPES_H Modified: firebird/trunk/src/common/db_alias.cpp =================================================================== --- firebird/trunk/src/common/db_alias.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/db_alias.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -32,6 +32,7 @@ #include "../common/utils_proto.h" #include "../common/classes/Hash.h" #include "../common/isc_f_proto.h" +#include "../common/StatusArg.h" #include <ctype.h> using namespace Firebird; Modified: firebird/trunk/src/common/dsc.cpp =================================================================== --- firebird/trunk/src/common/dsc.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/dsc.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -32,6 +32,7 @@ #include "../yvalve/gds_proto.h" #include "../common/gdsassert.h" #include "../common/dsc_proto.h" +#include "../common/StatusArg.h" using namespace Firebird; Modified: firebird/trunk/src/common/fb_exception.cpp =================================================================== --- firebird/trunk/src/common/fb_exception.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/fb_exception.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -85,8 +85,7 @@ { LocalStatus status; stuffException(&status); - const ISC_STATUS* s = status.get(); - fb_utils::copyStatus(status_vector, ISC_STATUS_LENGTH, s, fb_utils::statusLength(s)); + fb_utils::mergeStatus(status_vector, ISC_STATUS_LENGTH, &status); return status_vector[1]; } @@ -129,6 +128,13 @@ throw status_exception(status_vector); } +void status_exception::raise(const IStatus* status) +{ + ISC_STATUS_ARRAY status_vector; + fb_utils::mergeStatus(status_vector, ISC_STATUS_LENGTH, status); + throw status_exception(status_vector); +} + void status_exception::raise(const Arg::StatusVector& statusVector) { throw status_exception(statusVector.value()); @@ -138,7 +144,7 @@ { if (status) { - status->set(value()); + fb_utils::setIStatus(status, value()); } return value()[1]; @@ -157,7 +163,7 @@ if (status) { - status->set(FB_NELEM(sv), sv); + status->setErrors(FB_NELEM(sv), sv); } return sv[1]; @@ -181,7 +187,7 @@ if (status) { - status->set(FB_NELEM(sv), sv); + status->setErrors(FB_NELEM(sv), sv); } return sv[1]; Modified: firebird/trunk/src/common/isc.cpp =================================================================== --- firebird/trunk/src/common/isc.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/isc.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -583,6 +583,14 @@ } +void iscLogStatus(const TEXT* text, Firebird::IStatus* status) +{ + ISC_STATUS_BIG_ARRAY tmp; + fb_utils::mergeStatus(tmp, FB_NELEM(tmp), status); + iscLogStatus(text, tmp); +} + + void iscLogException(const char* text, const Firebird::Exception& e) { /************************************** Modified: firebird/trunk/src/common/isc_proto.h =================================================================== --- firebird/trunk/src/common/isc_proto.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/isc_proto.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -25,6 +25,7 @@ #define JRD_ISC_PROTO_H #include "../common/classes/fb_string.h" +#include "firebird/Interface.h" bool ISC_check_process_existence(SLONG); TEXT* ISC_get_host(TEXT *, USHORT); @@ -34,6 +35,7 @@ // Does not add word "Database" in the beginning like gds__log_status void iscLogStatus(const TEXT* text, const ISC_STATUS* status_vector); +void iscLogStatus(const TEXT* text, Firebird::IStatus* status); void iscLogException(const TEXT* text, const Firebird::Exception& e); #ifdef WIN9X_SUPPORT Modified: firebird/trunk/src/common/os/os_utils.h =================================================================== --- firebird/trunk/src/common/os/os_utils.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/os/os_utils.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -33,6 +33,7 @@ #endif #include "../common/classes/fb_string.h" +#include "../common/StatusArg.h" namespace os_utils { Modified: firebird/trunk/src/common/unicode_util.cpp =================================================================== --- firebird/trunk/src/common/unicode_util.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/unicode_util.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -1141,10 +1141,10 @@ } } - if (!lastError.isSuccess()) + if (lastError.getStatus() & Firebird::IStatus::FB_HAS_ERRORS) { (Arg::Gds(isc_random) << "Could not find acceptable ICU library" - << Arg::StatusVector(lastError.get())).raise(); + << Arg::StatusVector(lastError.getErrors())).raise(); } else (Arg::Gds(isc_random) << "Could not find acceptable ICU library").raise(); Modified: firebird/trunk/src/common/utils.cpp =================================================================== --- firebird/trunk/src/common/utils.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/utils.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -48,6 +48,7 @@ #include "../jrd/align.h" #include "../common/os/path_utils.h" #include "../common/os/fbsyslog.h" +#include "../common/StatusArg.h" #ifdef WIN_NT #include <direct.h> @@ -1129,6 +1130,47 @@ return copied; } +unsigned int mergeStatus(ISC_STATUS* to, unsigned int space, + const Firebird::IStatus* from) throw() +{ + const ISC_STATUS* s; + unsigned int copied = 0; + int state = from->getStatus(); + + if (state & Firebird::IStatus::FB_HAS_ERRORS) + { + s = from->getErrors(); + copied = copyStatus(to, space, s, statusLength(s)); + + to += copied; + space -= copied; + } + + if (state & Firebird::IStatus::FB_HAS_WARNINGS) + { + s = from->getWarnings(); + copied += copyStatus(to, space, s, statusLength(s)); + } + + if (!copied) + init_status(to); + + return copied; +} + +void setIStatus(Firebird::IStatus* to, const ISC_STATUS* from) throw() +{ + try + { + Firebird::Arg::StatusVector sv(from); + sv.copyTo(to); + } + catch(const Firebird::BadAlloc& ex) + { + ex.stuffException(to); + } +} + unsigned int statusLength(const ISC_STATUS* const status) throw() { unsigned int l = 0; Modified: firebird/trunk/src/common/utils_proto.h =================================================================== --- firebird/trunk/src/common/utils_proto.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/common/utils_proto.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -123,6 +123,10 @@ unsigned int copyStatus(ISC_STATUS* const to, const unsigned int space, const ISC_STATUS* const from, const unsigned int count) throw(); + unsigned int mergeStatus(ISC_STATUS* to, unsigned int space, const Firebird::IStatus* from) throw(); + + void setIStatus(Firebird::IStatus* to, const ISC_STATUS* from) throw(); + unsigned int statusLength(const ISC_STATUS* const status) throw(); enum FetchPassResult { Modified: firebird/trunk/src/dsql/DdlNodes.epp =================================================================== --- firebird/trunk/src/dsql/DdlNodes.epp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/dsql/DdlNodes.epp 2014-08-27 09:24:30 UTC (rev 60002) @@ -9669,15 +9669,6 @@ LocalStatus st; LocalStatus s2; // we will use it in DDL case and remember IStatus* s = &st; - class Check - { - public: - static void status(IStatus* s) - { - if (!s->isSuccess()) - status_exception::raise(s->get()); - } - }; SecDbContext* secDbContext = transaction->getSecDbContext(); if (!secDbContext) @@ -9688,10 +9679,10 @@ tdbb->getAttachment()->att_user->populateDpb(dpb); IAttachment* att = DispatcherPtr()->attachDatabase(s, secDb, dpb.getBufferLength(), dpb.getBuffer()); - Check::status(s); + check(s); ITransaction* tra = att->startTransaction(s, 0, NULL); - Check::status(s); + check(s); secDbContext = transaction->setSecDbContext(att, tra); } @@ -9701,7 +9692,7 @@ savePoint.printf("GLOBALMAP%d", secDbContext->savePoint++); secDbContext->att->execute(s, secDbContext->tra, 0, ("SAVEPOINT " + savePoint).c_str(), SQL_DIALECT_V6, NULL, NULL, NULL, NULL); - Check::status(s); + check(s); try { @@ -9786,13 +9777,13 @@ secDbContext->att->execute(&s2, secDbContext->tra, 0, ddl.c_str(), SQL_DIALECT_V6, NULL, NULL, NULL, NULL); - if (!s2.isSuccess()) + if (s2.getStatus() & IStatus::FB_HAS_ERRORS) { // try direct access to rdb$auth_mapping table in secure db // check presence of such record in the table - Message check; - Field<Varying> nm(check, 1); + Message msgCheck; + Field<Varying> nm(msgCheck, 1); nm = name.c_str(); Message result; @@ -9801,8 +9792,8 @@ const char* checkSql = "select count(*) from RDB$AUTH_MAPPING where RDB$MAP_NAME = ?"; secDbContext->att->execute(s, secDbContext->tra, 0, checkSql, SQL_DIALECT_V6, - check.getMetadata(), check.getBuffer(), result.getMetadata(), result.getBuffer()); - Check::status(s); + msgCheck.getMetadata(), msgCheck.getBuffer(), result.getMetadata(), result.getBuffer()); + check(s); if (cnt > 1 && op != MAP_DROP) ERRD_bugcheck("Database mapping misconfigured"); @@ -9870,7 +9861,7 @@ break; case MAP_DROP: sql = "delete from RDBAUTH_MAPPING where RDB$MAP_NAME = ?"; - msg = ✓ + msg = &msgCheck; break; } @@ -9878,12 +9869,12 @@ fb_assert(sql && msg); secDbContext->att->execute(s, secDbContext->tra, 0, sql, SQL_DIALECT_V6, msg->getMetadata(), msg->getBuffer(), NULL, NULL); - Check::status(s); + check(s); secDbContext->att->execute(s, secDbContext->tra, 0, ("RELEASE SAVEPOINT " + savePoint).c_str(), SQL_DIALECT_V6, NULL, NULL, NULL, NULL); savePoint.erase(); - Check::status(s); + check(s); } } catch (const Exception&) @@ -9894,11 +9885,11 @@ SQL_DIALECT_V6, NULL, NULL, NULL, NULL); } - if (!s2.isSuccess()) + if (s2.getStatus() & IStatus::FB_HAS_ERRORS) { - const ISC_STATUS* stat2 = s2.get(); + const ISC_STATUS* stat2 = s2.getErrors(); if (stat2[1] != isc_dsql_token_unk_err) - status_exception::raise(stat2); + status_exception::raise(&s2); } throw; Modified: firebird/trunk/src/dsql/dsql.cpp =================================================================== --- firebird/trunk/src/dsql/dsql.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/dsql/dsql.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -1362,9 +1362,9 @@ // raise error if one present static void checkD(IStatus* st) { - if (!st->isSuccess()) + if (st->getStatus() & IStatus::FB_HAS_ERRORS) { - ERRD_post(Arg::StatusVector(st->get())); + ERRD_post(Arg::StatusVector(st)); } } Modified: firebird/trunk/src/gpre/obj_cxx.cpp =================================================================== --- firebird/trunk/src/gpre/obj_cxx.cpp 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/gpre/obj_cxx.cpp 2014-08-27 09:24:30 UTC (rev 60002) @@ -157,10 +157,16 @@ printa(column, "}"); } +static inline void success(const int column, bool ok, const char* status_name, const char* post = "") +{ + printa(column, "if (%s%s->getStatus() & Firebird::IStatus::FB_HAS_ERRORS%s)%s", + ok ? "!(" : "", global_status_name, ok ? ")" : "", post); +} + static inline void set_sqlcode(const act* action, const int column) { if (action->act_flags & ACT_sql) - printa(column, "SQLCODE = isc_sqlcode(%s->get());", global_status_name); + printa(column, "SQLCODE = isc_sqlcode(%s->getErrors());", global_status_name); } static inline void ObjectNotImplemented() @@ -985,7 +991,7 @@ static void gen_blob_for( const act* action, USHORT column) { PAT args; - const TEXT* pattern1 = "%IFif (%S1->isSuccess()) {\n\ + const TEXT* pattern1 = "%IFif (!(%S1->getStatus() & Firebird::IStatus::FB_HAS_ERRORS)) {\n\ %ENwhile (1)\n\ {"; @@ -995,8 +1001,8 @@ PATTERN_expand(column, pattern1, &args); column += INDENT; gen_get_segment(action, column); - printa(column, "if ((!%s->isSuccess()) && (%s->get()[1] != isc_segment)) break;", - global_status_name, global_status_name); + printa(column, "if (fbIStatus == Firebird::IStatus::FB_ERROR || " + "fbIStatus == Firebird::IStatus::FB_EOF) break;"); } @@ -1299,7 +1305,7 @@ } request = action->act_request; - printa(column, "if (%s->isSuccess())", global_status_name); + success(column, true, global_status_name); column += INDENT; begin(column); printa(column, @@ -1312,10 +1318,10 @@ request->req_database->dbb_name->sym_string, status_vector(action), trname, request->req_length, request->req_ident); column -= INDENT; - printa(column, "if (%s->isSuccess())", global_status_name); + success(column, true, global_status_name); printa(column + INDENT, "%s->commit(%s);", trname, status_vector(action)); - printa(column, "if (!%s->isSuccess())", global_status_name); + success(column, false, global_status_name); printa(column + INDENT, "%s->rollback(%s);", trname, status_vector(NULL)); set_sqlcode(action, column); @@ -1472,6 +1478,7 @@ scope, global_status_name, all_extern ? "" : " = fbMaster->getStatus();"); printa(column, "%sFirebird::IStatus* %s2%s;\t/* status vector */", scope, global_status_name, all_extern ? "" : " = fbMaster->getStatus();"); + printa(column, "%sint fbIStatus;\t/* last completion code */", scope); for (db = gpreGlob.isc_databases; db; db = db->dbb_next) for (const tpb* tpb_iterator = db->dbb_tpbs; tpb_iterator; @@ -1550,10 +1557,10 @@ if (gpreGlob.sw_auto) { column -= INDENT; - printa(column, "if (%s->isSuccess())", global_status_name); + success(column, true, global_status_name); printa(column + INDENT, "%s->commit(%s);", gpreGlob.transaction_name, status_vector(action)); - printa(column, "if (!%s->isSuccess())", global_status_name); + success(column, false, global_status_name); printa(column + INDENT, "%s->rollback(%s);", gpreGlob.transaction_name, status_vector(NULL)); } @@ -2221,7 +2228,7 @@ { if ((action->act_error || (action->act_flags & ACT_sql)) && db != gpreGlob.isc_databases) { - printa(column, "if (%s && %s->isSuccess()) ", db->dbb_name->sym_string, global_status_name); + printa(column, "if (%s && !(%s->getStatus() & Firebird::IStatus::FB_HAS_ERRORS)) ", db->dbb_name->sym_string, global_status_name); } else printa(column, "if (%s)", db->dbb_name->sym_string); @@ -2245,7 +2252,7 @@ const gpre_req* request = action->act_request; if (action->act_error || (action->act_flags & ACT_sql)) - printa(column, "if (%s->isSuccess()) {", global_status_name); + success(column, true, global_status_name, " {"); printa(column, "while (1)"); column += INDENT; @@ -2254,7 +2261,7 @@ TEXT s[MAX_REF_SIZE]; if (action->act_error || (action->act_flags & ACT_sql)) - printa(column, "if (!%s || (!%s->isSuccess())) break;", + printa(column, "if (!%s || (%s->getStatus() & Firebird::IStatus::FB_HAS_ERRORS)) break;", gen_name(s, request->req_eof, true), global_status_name); else printa(column, "if (!%s) break;", gen_name(s, request->req_eof, true)); @@ -2444,7 +2451,7 @@ { ObjectNotImplemented(); const TEXT* pattern1 = - "%IF%S1 [1] = %ENisc_get_segment (%V1, &%BH, &%I1, (short) sizeof(%I2), %I2);"; + "fbIStatus = %BH->getSegment(%V1, sizeof(%I2), %I2, &%I1);"; if (action->act_error && (action->act_type != ACT_blob_for)) begin(column); @@ -2468,7 +2475,7 @@ { const ref* into = action->act_object; set_sqlcode(action, column); - printa(column, "if (!SQLCODE || SQLCODE == 101)"); + printa(column, "if (fbIStatus == Firebird::IStatus::FB_OK || fbIStatus == Firebird::IStatus::FB_SEGMENT)"); column += INDENT; begin(column); align(column); @@ -2538,19 +2545,7 @@ static void gen_on_error( const act* action, USHORT column) { - const act* err_action = (const act*) action->act_object; - switch (err_action->act_type) - { - case ACT_get_segment: - case ACT_put_segment: - case ACT_endblob: - printa(column, - "if ((!%s->isSuccess()) && (%s->get()[1] != isc_segment) && (%s->get()[1] != isc_segstr_eof))", - global_status_name, global_status_name, global_status_name); - break; - default: - printa(column, "if (!%s->isSuccess())", global_status_name); - } + success(column, false, global_status_name); column += INDENT; begin(column); } @@ -2709,7 +2704,7 @@ if ((action->act_error || (action->act_flags & ACT_sql)) && ready != (rdy*) action->act_object) { - printa(column, "if (%s->isSuccess()) {", global_status_name); + success(column, true, global_status_name, " {"); } make_ready(db, filename, vector, (USHORT) column, ready->rdy_request); if ((action->act_error || (action->act_flags & ACT_sql)) && @@ -3045,7 +3040,7 @@ if (action->act_error || (action->act_flags & ACT_sql)) column -= INDENT; - const TEXT* pattern1 = "if (%V1->get()[1] == isc_bad_req_handle) { %RH->release(); %RH = NULL; }"; + const TEXT* pattern1 = "if (%V1->getErrors()[1] == isc_bad_req_handle) { %RH->release(); %RH = NULL; }"; PAT args; args.pat_request = action->act_request; args.pat_vector1 = status_vector(action); @@ -3933,7 +3928,7 @@ align(column); fprintf(gpreGlob.out_file, "if (!%s", db->dbb_name->sym_string); if (stat && buffer[0]) - fprintf(gpreGlob.out_file, " && %s->isSuccess()", vector); + fprintf(gpreGlob.out_file, " && !(%s->getStatus() & Firebird::IStatus::FB_HAS_ERRORS)", vector); fprintf(gpreGlob.out_file, ")"); make_ready(db, filename, vector, (USHORT) (column + INDENT), 0); if (buffer[0]) Modified: firebird/trunk/src/include/fb_exception.h =================================================================== --- firebird/trunk/src/include/fb_exception.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/include/fb_exception.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -42,7 +42,6 @@ #endif #include "fb_types.h" -#include "../common/StatusArg.h" #include "../common/ThreadStart.h" namespace Firebird @@ -106,6 +105,7 @@ static void raise(const ISC_STATUS *status_vector); static void raise(const Arg::StatusVector& statusVector); + static void raise(const IStatus* status); protected: // Create exception with undefined status vector, this constructor allows Modified: firebird/trunk/src/include/fb_types.h =================================================================== --- firebird/trunk/src/include/fb_types.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/include/fb_types.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -156,4 +156,7 @@ return (T) ((((uintptr_t) n) + b - 1) & ~(b - 1)); } +// Big array for holding long temporal vectors from/to IStatus +typedef ISC_STATUS ISC_STATUS_BIG_ARRAY[ISC_STATUS_LENGTH * 3]; + #endif /* INCLUDE_FB_TYPES_H */ Modified: firebird/trunk/src/include/firebird/Auth.h =================================================================== --- firebird/trunk/src/include/firebird/Auth.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/include/firebird/Auth.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -152,7 +152,7 @@ virtual const char* FB_CARG role() = 0; virtual const char* FB_CARG networkProtocol() = 0; virtual const char* FB_CARG remoteAddress() = 0; - virtual unsigned int FB_CARG authBlock(const unsigned char** bytes) = 0; + virtual const unsigned char* FB_CARG authBlock(unsigned* length) = 0; }; #define FB_AUTH_LOGON_INFO_VERSION (FB_VERSIONED_VERSION + 5) Modified: firebird/trunk/src/include/firebird/Interface.h =================================================================== --- firebird/trunk/src/include/firebird/Interface.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/include/firebird/Interface.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -72,19 +72,29 @@ #define FB_DISPOSABLE_VERSION (FB_VERSIONED_VERSION + 1) // Interface to work with status vector -// Created by master interface by request -// Also may be implemented on stack by internal FB code class IStatus : public IDisposable { public: - virtual void FB_CARG set(unsigned int length, const ISC_STATUS* value) = 0; - virtual void FB_CARG set(const ISC_STATUS* value) = 0; + static const unsigned FB_HAS_WARNINGS = 0x01; + static const unsigned FB_HAS_ERRORS = 0x02; + + static const int FB_ERROR = -1; + static const int FB_OK = 0; + static const int FB_EOF = 1; + static const int FB_SEGMENT = 2; + virtual void FB_CARG init() = 0; + virtual unsigned FB_CARG getStatus() const = 0; - virtual const ISC_STATUS* FB_CARG get() const = 0; - virtual int FB_CARG isSuccess() const = 0; + virtual void FB_CARG setErrors(unsigned int length, const ISC_STATUS* value) = 0; + virtual void FB_CARG setWarnings(unsigned int length, const ISC_STATUS* value) = 0; + virtual void FB_CARG setErrors(const ISC_STATUS* value) = 0; + virtual void FB_CARG setWarnings(const ISC_STATUS* value) = 0; + + virtual const ISC_STATUS* FB_CARG getErrors() const = 0; + virtual const ISC_STATUS* FB_CARG getWarnings() const = 0; }; -#define FB_STATUS_VERSION (FB_DISPOSABLE_VERSION + 5) +#define FB_STATUS_VERSION (FB_DISPOSABLE_VERSION + 8) class IProvider; class IUtl; Modified: firebird/trunk/src/include/firebird/Provider.h =================================================================== --- firebird/trunk/src/include/firebird/Provider.h 2014-08-27 01:23:06 UTC (rev 60001) +++ firebird/trunk/src/include/firebird/Provider.h 2014-08-27 09:24:30 UTC (rev 60002) @@ -53,8 +53,8 @@ virtual void FB_CARG getInfo(IStatus* status, unsigned int itemsLength, const unsigned char* items, unsigned int bufferLength, unsigned char* buffer) = 0; - virtual unsigned int FB_CARG getSegment(IStatus* status, unsigned int length, - void* buffer) = 0; // returns real length + virtual int FB_CARG getSegment(IStatus* status, unsigned int bufferLength, + void* buffer, unsigned int* segmentLength) = 0; virtual void FB_CARG putSegment(IStatus* status, unsigned int length, const void*... [truncated message content] |
From: <fir...@us...> - 2014-08-28 01:25:44
|
Revision: 60006 http://sourceforge.net/p/firebird/code/60006 Author: firebirds Date: 2014-08-28 01:25:36 +0000 (Thu, 28 Aug 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-08-27 14:51:51 UTC (rev 60005) +++ firebird/trunk/ChangeLog 2014-08-28 01:25:36 UTC (rev 60006) @@ -1,3 +1,111 @@ + 2014-08-27 14:51 dimitr + M src/include/gen/ids.h + M src/jrd/Monitoring.cpp + M src/jrd/RuntimeStatistics.h + M src/jrd/names.h + M src/jrd/relations.h + M src/jrd/vio.cpp +Added counter for record refetches (aka repeated reads). + + 2014-08-27 13:32 dimitr + M src/common/classes/alloc.cpp +Misc. + + 2014-08-27 12:56 dimitr + M src/include/gen/codetext.h + M src/include/gen/iberror.h + M src/include/gen/msgs.h + M src/include/gen/sql_code.h + M src/include/gen/sql_state.h + M src/jrd/vio.cpp + M src/msgs/facilities2.sql + M src/msgs/messages2.sql + M src/msgs/system_errors2.sql +Added specific error code for read conflicts in RC NO_REC_VER mode. Added missing conflict counting. + + 2014-08-27 09:24 alexpeshkoff + M examples/dbcrypt/CryptKeyHolder.cpp + M examples/dbcrypt/DbCrypt.cpp + M examples/interfaces/01.create.cpp + M examples/interfaces/02.update.cpp + M examples/interfaces/03.select.cpp + M examples/interfaces/04.print_table.cpp + M examples/udr/UdrCppExample.cpp + M src/auth/AuthDbg.cpp + M src/auth/SecureRemotePassword/Message.h + M src/auth/SecureRemotePassword/client/SrpClient.cpp + M src/auth/SecureRemotePassword/manage/SrpManagement.cpp + M src/auth/SecureRemotePassword/server/SrpServer.cpp + M src/auth/SecurityDatabase/LegacyClient.cpp + M src/auth/SecurityDatabase/LegacyManagement.epp + M src/auth/SecurityDatabase/LegacyServer.cpp + M src/common/BigInteger.cpp + M src/common/CsConvert.h + M src/common/MsgMetadata.h + M src/common/StatusArg.cpp + M src/common/StatusArg.h + M src/common/StatusHolder.cpp + M src/common/StatusHolder.h + M src/common/UtilSvc.cpp + M src/common/call_service.cpp + M src/common/classes/BlrReader.h + M src/common/classes/ImplementHelper.h + M src/common/cvt.cpp + M src/common/db_alias.cpp + M src/common/dsc.cpp + M src/common/fb_exception.cpp + M src/common/isc.cpp + M src/common/isc_proto.h + M src/common/os/os_utils.h + M src/common/unicode_util.cpp + M src/common/utils.cpp + M src/common/utils_proto.h + M src/dsql/DdlNodes.epp + M src/dsql/dsql.cpp + M src/gpre/obj_cxx.cpp + M src/include/fb_exception.h + M src/include/fb_types.h + M src/include/firebird/Auth.h + M src/include/firebird/Interface.h + M src/include/firebird/Provider.h + M src/include/firebird/UdrCppEngine.h + M src/isql/extract.epp + M src/isql/isql.epp + M src/isql/show.epp + M src/jrd/CryptoManager.cpp + M src/jrd/Database.cpp + M src/jrd/EngineInterface.h + M src/jrd/Mapping.cpp + M src/jrd/UserManagement.cpp + M src/jrd/extds/ExtDS.cpp + M src/jrd/extds/InternalDS.cpp + M src/jrd/jrd.cpp + M src/jrd/jrd.h + M src/jrd/tra.cpp + M src/jrd/trace/TraceManager.cpp + M src/plugins/udr_engine/UdrEngine.cpp + M src/remote/client/interface.cpp + M src/remote/inet.cpp + M src/remote/remote.cpp + M src/remote/remote.h + M src/remote/server/server.cpp + M src/utilities/fbsvcmgr/fbsvcmgr.cpp + M src/utilities/gsec/gsec.cpp + M src/yvalve/DistributedTransaction.cpp + M src/yvalve/PluginManager.cpp + M src/yvalve/YObjects.h + M src/yvalve/perf.cpp + M src/yvalve/preparse.cpp + M src/yvalve/utl.cpp + M src/yvalve/why.cpp +Divide IStatus information into 3 parts: errors, warnings and completion code. +Errors and warnings are processed in IStatus independently. Completion code +is moved away from IStatus and returned directly by appropriate functions. +Replaced isSuccess() with more generic function getStatus(), which sets +appropriate bits in returned value when errors/warnings are present. +Also use same style when returning bytes' array and it's length in different +interfaces. + 2014-08-26 14:16 dimitr M src/common/ThreadStart.h Quick fix for the Windows build. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-08-27 14:51:51 UTC (rev 60005) +++ firebird/trunk/src/jrd/build_no.h 2014-08-28 01:25:36 UTC (rev 60006) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31305 + FORMAL BUILD NUMBER:31309 */ -#define PRODUCT_VER_STRING "3.0.0.31305" -#define FILE_VER_STRING "WI-T3.0.0.31305" -#define LICENSE_VER_STRING "WI-T3.0.0.31305" -#define FILE_VER_NUMBER 3, 0, 0, 31305 +#define PRODUCT_VER_STRING "3.0.0.31309" +#define FILE_VER_STRING "WI-T3.0.0.31309" +#define LICENSE_VER_STRING "WI-T3.0.0.31309" +#define FILE_VER_NUMBER 3, 0, 0, 31309 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31305" +#define FB_BUILD_NO "31309" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-08-27 14:51:51 UTC (rev 60005) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-08-28 01:25:36 UTC (rev 60006) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31305 +BuildNum=31309 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-08-29 01:30:25
|
Revision: 60015 http://sourceforge.net/p/firebird/code/60015 Author: firebirds Date: 2014-08-29 01:30:21 +0000 (Fri, 29 Aug 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-08-28 15:53:43 UTC (rev 60014) +++ firebird/trunk/ChangeLog 2014-08-29 01:30:21 UTC (rev 60015) @@ -1,3 +1,53 @@ + 2014-08-28 15:53 dimitr + M src/dsql/StmtNodes.cpp + M src/jrd/recsrc/RecordSource.cpp + M src/jrd/vio.cpp + M src/jrd/vio_proto.h +Minor refactoring. + + 2014-08-28 15:34 dimitr + M src/jrd/recsrc/RecordSource.cpp +Fixed missing encounting for record refetches. + + 2014-08-28 15:16 dimitr + M src/include/gen/ids.h + M src/jrd/Monitoring.cpp + M src/jrd/RuntimeStatistics.h + M src/jrd/names.h + M src/jrd/relations.h + M src/jrd/vio.cpp +Minor adjustments to the performance counters. Work in progress. + + 2014-08-28 12:19 roman-simakov + M src/dsql/DdlNodes.epp + M src/include/gen/ids.h + M src/isql/show.epp + M src/jrd/grant.epp + M src/jrd/irq.h + M src/jrd/relations.h +Fixed CORE-4522 - DDL permission do not protect +against removal BLOB filters. Owner was added to RDB$FILTERS. ODS is changed. +Fixed bug when one DDL privilege could be shown several times. +Removed unneccesary check of locksmith in alter database. + + 2014-08-28 09:30 alexpeshkoff + M src/auth/SecurityDatabase/LegacyServer.cpp + M src/remote/server/server.cpp +Minor debug enhancement + + 2014-08-28 09:02 alexpeshkoff + M src/common/utils.cpp +Fixed merge of IStatus into old status vector format - thanks to Pavel + + 2014-08-28 08:55 alexpeshkoff + M src/jrd/obj.h +Added missing name + + 2014-08-28 07:27 alexpeshkoff + M lang_helpers/gds_codes.ftn + M lang_helpers/gds_codes.pas +misc + 2014-08-27 14:51 dimitr M src/include/gen/ids.h M src/jrd/Monitoring.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-08-28 15:53:43 UTC (rev 60014) +++ firebird/trunk/src/jrd/build_no.h 2014-08-29 01:30:21 UTC (rev 60015) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31309 + FORMAL BUILD NUMBER:31317 */ -#define PRODUCT_VER_STRING "3.0.0.31309" -#define FILE_VER_STRING "WI-T3.0.0.31309" -#define LICENSE_VER_STRING "WI-T3.0.0.31309" -#define FILE_VER_NUMBER 3, 0, 0, 31309 +#define PRODUCT_VER_STRING "3.0.0.31317" +#define FILE_VER_STRING "WI-T3.0.0.31317" +#define LICENSE_VER_STRING "WI-T3.0.0.31317" +#define FILE_VER_NUMBER 3, 0, 0, 31317 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31309" +#define FB_BUILD_NO "31317" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-08-28 15:53:43 UTC (rev 60014) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-08-29 01:30:21 UTC (rev 60015) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31309 +BuildNum=31317 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-08-30 01:29:53
|
Revision: 60018 http://sourceforge.net/p/firebird/code/60018 Author: firebirds Date: 2014-08-30 01:29:50 +0000 (Sat, 30 Aug 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-08-29 11:15:50 UTC (rev 60017) +++ firebird/trunk/ChangeLog 2014-08-30 01:29:50 UTC (rev 60018) @@ -1,3 +1,11 @@ + 2014-08-29 11:15 roman-simakov + M src/dsql/parse.y +Removed ANY keyword in DDL REVOKE permission statements for DATABASE + + 2014-08-29 09:05 roman-simakov + M src/dsql/parse.y +Removed ANY keyword in DDL permission statements for DATABASE + 2014-08-28 15:53 dimitr M src/dsql/StmtNodes.cpp M src/jrd/recsrc/RecordSource.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-08-29 11:15:50 UTC (rev 60017) +++ firebird/trunk/src/jrd/build_no.h 2014-08-30 01:29:50 UTC (rev 60018) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31317 + FORMAL BUILD NUMBER:31319 */ -#define PRODUCT_VER_STRING "3.0.0.31317" -#define FILE_VER_STRING "WI-T3.0.0.31317" -#define LICENSE_VER_STRING "WI-T3.0.0.31317" -#define FILE_VER_NUMBER 3, 0, 0, 31317 +#define PRODUCT_VER_STRING "3.0.0.31319" +#define FILE_VER_STRING "WI-T3.0.0.31319" +#define LICENSE_VER_STRING "WI-T3.0.0.31319" +#define FILE_VER_NUMBER 3, 0, 0, 31319 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31317" +#define FB_BUILD_NO "31319" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-08-29 11:15:50 UTC (rev 60017) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-08-30 01:29:50 UTC (rev 60018) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31317 +BuildNum=31319 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-09-02 01:21:56
|
Revision: 60023 http://sourceforge.net/p/firebird/code/60023 Author: firebirds Date: 2014-09-02 01:21:47 +0000 (Tue, 02 Sep 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-09-01 13:22:55 UTC (rev 60022) +++ firebird/trunk/ChangeLog 2014-09-02 01:21:47 UTC (rev 60023) @@ -1,3 +1,25 @@ + 2014-09-01 13:22 dimitr + M src/jrd/Database.cpp +Correction. + + 2014-09-01 13:19 dimitr + M src/jrd/Database.cpp + M src/jrd/Database.h + M src/jrd/Monitoring.cpp + M src/jrd/cch.cpp + M src/jrd/cch_proto.h + M src/jrd/jrd.cpp + M src/jrd/lck.cpp +Refactored the shared cache checks. Optimized the shared counter for SS. + + 2014-09-01 09:44 alexpeshkoff + M src/jrd/Mapping.cpp +Misc + + 2014-09-01 08:29 dimitr + M src/jrd/vio.cpp +Count record reads performed by the IDX code. + 2014-08-29 11:15 roman-simakov M src/dsql/parse.y Removed ANY keyword in DDL REVOKE permission statements for DATABASE Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-09-01 13:22:55 UTC (rev 60022) +++ firebird/trunk/src/jrd/build_no.h 2014-09-02 01:21:47 UTC (rev 60023) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31319 + FORMAL BUILD NUMBER:31323 */ -#define PRODUCT_VER_STRING "3.0.0.31319" -#define FILE_VER_STRING "WI-T3.0.0.31319" -#define LICENSE_VER_STRING "WI-T3.0.0.31319" -#define FILE_VER_NUMBER 3, 0, 0, 31319 +#define PRODUCT_VER_STRING "3.0.0.31323" +#define FILE_VER_STRING "WI-T3.0.0.31323" +#define LICENSE_VER_STRING "WI-T3.0.0.31323" +#define FILE_VER_NUMBER 3, 0, 0, 31323 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31319" +#define FB_BUILD_NO "31323" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-09-01 13:22:55 UTC (rev 60022) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-09-02 01:21:47 UTC (rev 60023) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31319 +BuildNum=31323 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ale...@us...> - 2014-09-02 16:55:25
|
Revision: 60025 http://sourceforge.net/p/firebird/code/60025 Author: alexpeshkoff Date: 2014-09-02 16:55:14 +0000 (Tue, 02 Sep 2014) Log Message: ----------- Implemented CORE-4538: Access rights for CREATE DATABASE operator Modified Paths: -------------- firebird/trunk/doc/sql.extensions/README.ddl_access.txt firebird/trunk/lang_helpers/gds_codes.ftn firebird/trunk/lang_helpers/gds_codes.pas firebird/trunk/src/dsql/DdlNodes.epp firebird/trunk/src/dsql/DdlNodes.h firebird/trunk/src/dsql/parse.y firebird/trunk/src/include/gen/codetext.h firebird/trunk/src/include/gen/iberror.h firebird/trunk/src/include/gen/ids.h firebird/trunk/src/include/gen/msgs.h firebird/trunk/src/include/gen/sql_code.h firebird/trunk/src/include/gen/sql_state.h firebird/trunk/src/isql/show.epp firebird/trunk/src/jrd/jrd.cpp firebird/trunk/src/jrd/names.h firebird/trunk/src/jrd/opt.cpp firebird/trunk/src/jrd/relations.h firebird/trunk/src/jrd/tra.cpp firebird/trunk/src/jrd/tra.h firebird/trunk/src/msgs/facilities2.sql firebird/trunk/src/msgs/messages2.sql firebird/trunk/src/msgs/system_errors2.sql Added Paths: ----------- firebird/trunk/src/jrd/DbCreators.cpp firebird/trunk/src/jrd/DbCreators.h Modified: firebird/trunk/doc/sql.extensions/README.ddl_access.txt =================================================================== --- firebird/trunk/doc/sql.extensions/README.ddl_access.txt 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/doc/sql.extensions/README.ddl_access.txt 2014-09-02 16:55:14 UTC (rev 60025) @@ -16,12 +16,12 @@ REVOKE [GRANT OPTION FOR] DROP ANY <OBJECT> FROM [USER | ROLE] <user/role name>; Where <OBJECT> could be: -TABLE, VIEW, PROCEDURE, FUNCTION, PACKAGE, GENERATOR, SEQUENCE, DOMAIN, -EXCEPTION, ROLE, DATABASE, CHARACTER SET, COLLATION, FILTER +TABLE, VIEW, PROCEDURE, FUNCTION, PACKAGE, GENERATOR, SEQUENCE, DOMAIN, +EXCEPTION, ROLE, CHARACTER SET, COLLATION, FILTER Description: -Makes it possible to grant and revoke privileges on DDL operations. +Makes it possible to grant and revoke privileges on DDL operations. DDL operations for managing triggers and indices re-use table privileges. @@ -31,5 +31,15 @@ Sample: GRANT CREATE TABLE TO Joe; -GRANT ALTER ANY TABLE TO Joe; +GRANT ALTER ANY TABLE TO Joe; REVOKE CREATE TABLE FROM Joe; + +For database access special form is supported: + +GRANT CREATE DATABASE TO [USER | ROLE] <user/role name>; +GRANT ALTER DATABASE TO [USER | ROLE] <user/role name> [WITH GRANT OPTION]; +GRANT DROP DATABASE TO [USER | ROLE] <user/role name> [WITH GRANT OPTION]; + +REVOKE CREATE DATABASE FROM [USER | ROLE] <user/role name>; +REVOKE [GRANT OPTION FOR] ALTER DATABASE FROM [USER | ROLE] <user/role name>; +REVOKE [GRANT OPTION FOR] DROP DATABASE FROM [USER | ROLE] <user/role name>; Modified: firebird/trunk/lang_helpers/gds_codes.ftn =================================================================== --- firebird/trunk/lang_helpers/gds_codes.ftn 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/lang_helpers/gds_codes.ftn 2014-09-02 16:55:14 UTC (rev 60025) @@ -1604,6 +1604,12 @@ PARAMETER (GDS__dsql_cant_grant_option = 335545095) INTEGER*4 GDS__read_conflict PARAMETER (GDS__read_conflict = 335545096) + INTEGER*4 GDS__crdb_load + PARAMETER (GDS__crdb_load = 335545097) + INTEGER*4 GDS__crdb_nodb + PARAMETER (GDS__crdb_nodb = 335545098) + INTEGER*4 GDS__crdb_notable + PARAMETER (GDS__crdb_notable = 335545099) INTEGER*4 GDS__gfix_db_name PARAMETER (GDS__gfix_db_name = 335740929) INTEGER*4 GDS__gfix_invalid_sw Modified: firebird/trunk/lang_helpers/gds_codes.pas =================================================================== --- firebird/trunk/lang_helpers/gds_codes.pas 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/lang_helpers/gds_codes.pas 2014-09-02 16:55:14 UTC (rev 60025) @@ -809,6 +809,9 @@ gds_dyn_no_priv = 335545094; gds_dsql_cant_grant_option = 335545095; gds_read_conflict = 335545096; + gds_crdb_load = 335545097; + gds_crdb_nodb = 335545098; + gds_crdb_notable = 335545099; gds_gfix_db_name = 335740929; gds_gfix_invalid_sw = 335740930; gds_gfix_incmp_sw = 335740932; Modified: firebird/trunk/src/dsql/DdlNodes.epp =================================================================== --- firebird/trunk/src/dsql/DdlNodes.epp 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/dsql/DdlNodes.epp 2014-09-02 16:55:14 UTC (rev 60025) @@ -115,7 +115,61 @@ //---------------------- +void ExecInSecurityDb::executeInSecurityDb(jrd_tra* localTransaction) +{ + LocalStatus st; + SecDbContext* secDbContext = localTransaction->getSecDbContext(); + if (!secDbContext) + { + Attachment* lAtt = localTransaction->getAttachment(); + const char* secDb = lAtt->att_database->dbb_config->getSecurityDatabase(); + ClumpletWriter dpb(ClumpletWriter::WideTagged, MAX_DPB_SIZE, isc_dpb_version2); + if (lAtt->att_user) + lAtt->att_user->populateDpb(dpb); + IAttachment* att = DispatcherPtr()->attachDatabase(&st, secDb, + dpb.getBufferLength(), dpb.getBuffer()); + check(&st); + + ITransaction* tra = att->startTransaction(&st, 0, NULL); + check(&st); + + secDbContext = localTransaction->setSecDbContext(att, tra); + } + + // run all statements under savepoint control + string savePoint; + savePoint.printf("ExecInSecurityDb%d", secDbContext->savePoint++); + secDbContext->att->execute(&st, secDbContext->tra, 0, ("SAVEPOINT " + savePoint).c_str(), + SQL_DIALECT_V6, NULL, NULL, NULL, NULL); + check(&st); + + try + { + runInSecurityDb(secDbContext); + + secDbContext->att->execute(&st, secDbContext->tra, 0, ("RELEASE SAVEPOINT " + savePoint).c_str(), + SQL_DIALECT_V6, NULL, NULL, NULL, NULL); + savePoint.erase(); + check(&st); + } + catch (const Exception&) + { + if (savePoint.hasData()) + { + LocalStatus tmp; + secDbContext->att->execute(&tmp, secDbContext->tra, 0, ("ROLLBACK TO SAVEPOINT " + savePoint).c_str(), + SQL_DIALECT_V6, NULL, NULL, NULL, NULL); + } + + throw; + } +} + + +//---------------------- + + // Check temporary table reference rules between given child relation and master // relation (owner of given PK/UK index). static void checkForeignKeyTempScope(thread_db* tdbb, jrd_tra* transaction, @@ -9662,243 +9716,213 @@ return false; } -// It's purpose is to add/drop mapping from any security name to DB security object. -void MappingNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch, jrd_tra* transaction) +void MappingNode::runInSecurityDb(SecDbContext* secDbContext) { - if (!(tdbb->getAttachment() && tdbb->getAttachment()->locksmith())) - status_exception::raise(Arg::Gds(isc_adm_task_denied)); + Firebird::LocalStatus st; + IStatus* s = &st; - if (global) + // first of all try to use regenerated DDL statement + // that's the best way if security database is FB3 or higher fb version + string ddl; + + switch(op) { - LocalStatus st; - LocalStatus s2; // we will use it in DDL case and remember - IStatus* s = &st; + case MAP_ADD: + ddl = "CREATE MAPPING "; + break; + case MAP_MOD: + ddl = "ALTER MAPPING "; + break; + case MAP_DROP: + ddl = "DROP MAPPING "; + break; + case MAP_RPL: + ddl = "CREATE OR ALTER MAPPING "; + break; + } - SecDbContext* secDbContext = transaction->getSecDbContext(); - if (!secDbContext) + addItem(ddl, name.c_str()); + if (op != MAP_DROP) + { + ddl += " USING "; + switch (mode) { - const char* secDb = tdbb->getDatabase()->dbb_config->getSecurityDatabase(); - ClumpletWriter dpb(ClumpletWriter::WideTagged, MAX_DPB_SIZE, isc_dpb_version2); - if (tdbb->getAttachment()->att_user) - tdbb->getAttachment()->att_user->populateDpb(dpb); - IAttachment* att = DispatcherPtr()->attachDatabase(s, secDb, - dpb.getBufferLength(), dpb.getBuffer()); - check(s); + case 'P': + if (!plugin) + ddl += "ANY PLUGIN "; + else + { + ddl += "PLUGIN "; + addItem(ddl, plugin->c_str()); + ddl += ' '; + } + break; + case 'S': + ddl += "ANY PLUGIN SERVERWIDE "; + break; + case '*': + ddl += "* "; + break; + case 'M': + ddl += "MAPPING "; + break; + } - ITransaction* tra = att->startTransaction(s, 0, NULL); - check(s); + if (db) + { + ddl += "IN "; + addItem(ddl, db->c_str()); + ddl += ' '; + } - secDbContext = transaction->setSecDbContext(att, tra); + if (fromType) + { + ddl += "FROM "; + if (!from) + ddl += "ANY "; + addItem(ddl, fromType->c_str()); + ddl += ' '; + if (from) + { + addItem(ddl, from->getString().c_str()); + ddl += ' '; + } } - // run all statements under savepoint control - string savePoint; - savePoint.printf("GLOBALMAP%d", secDbContext->savePoint++); - secDbContext->att->execute(s, secDbContext->tra, 0, ("SAVEPOINT " + savePoint).c_str(), - SQL_DIALECT_V6, NULL, NULL, NULL, NULL); - check(s); + ddl += "TO "; + ddl += (role ? "ROLE" : "USER"); + if (to) + { + ddl += ' '; + addItem(ddl, to->c_str()); + } + } + // Now try to run DDL + secDbContext->att->execute(s, secDbContext->tra, 0, ddl.c_str(), SQL_DIALECT_V6, + NULL, NULL, NULL, NULL); + + if (s->getStatus() & IStatus::FB_HAS_ERRORS) + { try { - // first of all try to use regenerated DDL statement - // that's the best way if security database is FB3 or higher fb version - string ddl; + // try direct access to rdb$auth_mapping table in secure db + LocalStatus s2; + s = &s2; + // check presence of such record in the table + Message msgCheck; + Field<Varying> nm(msgCheck, 1); + nm = name.c_str(); + + Message result; + Field<ISC_INT64> cnt(result); + + const char* checkSql = "select count(*) from RDB$AUTH_MAPPING where RDB$MAP_NAME = ?"; + + secDbContext->att->execute(s, secDbContext->tra, 0, checkSql, SQL_DIALECT_V6, + msgCheck.getMetadata(), msgCheck.getBuffer(), result.getMetadata(), result.getBuffer()); + check(s); + + if (cnt > 1 && op != MAP_DROP) + ERRD_bugcheck("Database mapping misconfigured"); + + bool hasLine = cnt > 0; switch(op) { case MAP_ADD: - ddl = "CREATE MAPPING "; + if (hasLine) + (Arg::Gds(isc_map_already_exists) << name).raise(); break; + case MAP_MOD: - ddl = "ALTER MAPPING "; - break; case MAP_DROP: - ddl = "DROP MAPPING "; + if (!hasLine) + (Arg::Gds(isc_map_not_exists) << name).raise(); break; + case MAP_RPL: - ddl = "CREATE OR ALTER MAPPING "; + op = hasLine ? MAP_MOD : MAP_DROP; break; } - addItem(ddl, name.c_str()); - if (op != MAP_DROP) - { - ddl += " USING "; - switch (mode) - { - case 'P': - if (!plugin) - ddl += "ANY PLUGIN "; - else - { - ddl += "PLUGIN "; - addItem(ddl, plugin->c_str()); - ddl += ' '; - } - break; - case 'S': - ddl += "ANY PLUGIN SERVERWIDE "; - break; - case '*': - ddl += "* "; - break; - case 'M': - ddl += "MAPPING "; - break; - } + // Get ready to modify table + Message full; + Field<ISC_SHORT> toType(full); + Field<Varying> t(full, MAX_SQL_IDENTIFIER_LEN); + Field<Varying> usng2(full, 1); + Field<Varying> plug2(full, MAX_SQL_IDENTIFIER_LEN); + Field<Varying> d2(full, MAX_SQL_IDENTIFIER_LEN); + Field<Varying> type2(full, MAX_SQL_IDENTIFIER_LEN); + Field<Varying> f2(full, 255); + Field<Varying> nm2(full, MAX_SQL_IDENTIFIER_LEN); - if (db) - { - ddl += "IN "; - addItem(ddl, db->c_str()); - ddl += ' '; - } + toType = role ? 1 : 0; + if (to) + t = to->c_str(); + usng2.set(1, &mode); + if (plugin) + plug2 = plugin->c_str(); + if (db) + d2 = db->c_str(); + if (fromType) + type2 = fromType->c_str(); + if (from) + f2 = from->getString().c_str(); + nm2 = name.c_str(); - if (fromType) - { - ddl += "FROM "; - if (!from) - ddl += "ANY "; - addItem(ddl, fromType->c_str()); - ddl += ' '; - if (from) - { - addItem(ddl, from->getString().c_str()); - ddl += ' '; - } - } - - ddl += "TO "; - ddl += (role ? "ROLE" : "USER"); - if (to) - { - ddl += ' '; - addItem(ddl, to->c_str()); - } + Message* msg = NULL; + const char* sql = NULL; + switch(op) + { + case MAP_ADD: + sql = "insert into RDB$AUTH_MAPPING(RDB$MAP_TO_TYPE, RDB$MAP_TO, RDB$MAP_USING, " + "RDB$MAP_PLUGIN, RDB$MAP_DB, RDB$MAP_FROM_TYPE, RDB$MAP_FROM, RDB$MAP_NAME) " + "values (?, ?, ?, ?, ?, ?, ?, ?)"; + msg = &full; + break; + case MAP_MOD: + sql = "update RDB$AUTH_MAPPING set RDB$MAP_TO_TYPE = ?, RDB$MAP_TO = ?, " + "RDB$MAP_USING = ?, RDB$MAP_PLUGIN = ?, RDB$MAP_DB = ?, " + "RDB$MAP_FROM_TYPE = ?, RDB$MAP_FROM = ? " + "where RDB$MAP_NAME = ?"; + msg = &full; + break; + case MAP_DROP: + sql = "delete from RDBAUTH_MAPPING where RDB$MAP_NAME = ?"; + msg = &msgCheck; + break; } - // Now try to run DDL - secDbContext->att->execute(&s2, secDbContext->tra, 0, ddl.c_str(), SQL_DIALECT_V6, - NULL, NULL, NULL, NULL); - - if (s2.getStatus() & IStatus::FB_HAS_ERRORS) - { - // try direct access to rdb$auth_mapping table in secure db - - // check presence of such record in the table - Message msgCheck; - Field<Varying> nm(msgCheck, 1); - nm = name.c_str(); - - Message result; - Field<ISC_INT64> cnt(result); - - const char* checkSql = "select count(*) from RDB$AUTH_MAPPING where RDB$MAP_NAME = ?"; - - secDbContext->att->execute(s, secDbContext->tra, 0, checkSql, SQL_DIALECT_V6, - msgCheck.getMetadata(), msgCheck.getBuffer(), result.getMetadata(), result.getBuffer()); - check(s); - - if (cnt > 1 && op != MAP_DROP) - ERRD_bugcheck("Database mapping misconfigured"); - - bool hasLine = cnt > 0; - switch(op) - { - case MAP_ADD: - if (hasLine) - (Arg::Gds(isc_map_already_exists) << name).raise(); - break; - - case MAP_MOD: - case MAP_DROP: - if (!hasLine) - (Arg::Gds(isc_map_not_exists) << name).raise(); - break; - - case MAP_RPL: - op = hasLine ? MAP_MOD : MAP_DROP; - break; - } - - // Get ready to modify table - Message full; - Field<ISC_SHORT> toType(full); - Field<Varying> t(full, MAX_SQL_IDENTIFIER_LEN); - Field<Varying> usng2(full, 1); - Field<Varying> plug2(full, MAX_SQL_IDENTIFIER_LEN); - Field<Varying> d2(full, MAX_SQL_IDENTIFIER_LEN); - Field<Varying> type2(full, MAX_SQL_IDENTIFIER_LEN); - Field<Varying> f2(full, 255); - Field<Varying> nm2(full, MAX_SQL_IDENTIFIER_LEN); - - toType = role ? 1 : 0; - if (to) - t = to->c_str(); - usng2.set(1, &mode); - if (plugin) - plug2 = plugin->c_str(); - if (db) - d2 = db->c_str(); - if (fromType) - type2 = fromType->c_str(); - if (from) - f2 = from->getString().c_str(); - nm2 = name.c_str(); - - Message* msg = NULL; - const char* sql = NULL; - switch(op) - { - case MAP_ADD: - sql = "insert into RDB$AUTH_MAPPING(RDB$MAP_TO_TYPE, RDB$MAP_TO, RDB$MAP_USING, " - "RDB$MAP_PLUGIN, RDB$MAP_DB, RDB$MAP_FROM_TYPE, RDB$MAP_FROM, RDB$MAP_NAME) " - "values (?, ?, ?, ?, ?, ?, ?, ?)"; - msg = &full; - break; - case MAP_MOD: - sql = "update RDB$AUTH_MAPPING set RDB$MAP_TO_TYPE = ?, RDB$MAP_TO = ?, " - "RDB$MAP_USING = ?, RDB$MAP_PLUGIN = ?, RDB$MAP_DB = ?, " - "RDB$MAP_FROM_TYPE = ?, RDB$MAP_FROM = ? " - "where RDB$MAP_NAME = ?"; - msg = &full; - break; - case MAP_DROP: - sql = "delete from RDBAUTH_MAPPING where RDB$MAP_NAME = ?"; - msg = &msgCheck; - break; - } - - // Actual modification - fb_assert(sql && msg); - secDbContext->att->execute(s, secDbContext->tra, 0, sql, SQL_DIALECT_V6, - msg->getMetadata(), msg->getBuffer(), NULL, NULL); - check(s); - - secDbContext->att->execute(s, secDbContext->tra, 0, ("RELEASE SAVEPOINT " + savePoint).c_str(), - SQL_DIALECT_V6, NULL, NULL, NULL, NULL); - savePoint.erase(); - check(s); - } + // Actual modification + fb_assert(sql && msg); + secDbContext->att->execute(s, secDbContext->tra, 0, sql, SQL_DIALECT_V6, + msg->getMetadata(), msg->getBuffer(), NULL, NULL); + check(s); } - catch (const Exception&) + catch(const Exception& ex) { - if (savePoint.hasData()) + if (st.getStatus() & IStatus::FB_HAS_ERRORS) { - secDbContext->att->execute(s, secDbContext->tra, 0, ("ROLLBACK TO SAVEPOINT " + savePoint).c_str(), - SQL_DIALECT_V6, NULL, NULL, NULL, NULL); - } - - if (s2.getStatus() & IStatus::FB_HAS_ERRORS) - { - const ISC_STATUS* stat2 = s2.getErrors(); + const ISC_STATUS* stat2 = st.getErrors(); if (stat2[1] != isc_dsql_token_unk_err) - status_exception::raise(&s2); + status_exception::raise(&st); } throw; } + } +} +// It's purpose is to add/drop mapping from any security name to DB security object. +void MappingNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch, jrd_tra* transaction) +{ + if (!(tdbb->getAttachment() && tdbb->getAttachment()->locksmith())) + status_exception::raise(Arg::Gds(isc_adm_task_denied)); + + if (global) + { + executeInSecurityDb(transaction); return; } @@ -10319,6 +10343,8 @@ // run all statements under savepoint control AutoSavePoint savePoint(tdbb, transaction); + createDbJobs.clear(); + const GranteeClause* usersPtr; const GranteeClause* usersEnd; @@ -10356,9 +10382,83 @@ } } + if (createDbJobs.hasData()) + executeInSecurityDb(transaction); + savePoint.release(); // everything is ok } +void GrantRevokeNode::runInSecurityDb(SecDbContext* secDbContext) +{ + for (unsigned n = 0; n < createDbJobs.getCount(); ++n) + { + CreateDbJob& j = createDbJobs[n]; + LocalStatus st; + IStatus* s = &st; + + Message gr; + Field<ISC_SHORT> uType(gr); + Field<Varying> u(gr, MAX_SQL_IDENTIFIER_LEN); + uType = j.userType; + u = j.user.c_str(); + + Message result; + Field<ISC_INT64> cnt(result); + + const char* checkSql = "select count(*) from RDB$DB_CREATORS where RDB$USER_TYPE = ? and RDB$USER = ?"; + secDbContext->att->execute(s, secDbContext->tra, 0, checkSql, SQL_DIALECT_V6, + gr.getMetadata(), gr.getBuffer(), result.getMetadata(), result.getBuffer()); + check(s); + + if (isGrant) + { + if (!cnt) + { + const char* insertSql = "insert into RDB$DB_CREATORS(RDB$USER_TYPE, RDB$USER) values(?, ?)"; + secDbContext->att->execute(s, secDbContext->tra, 0, insertSql, SQL_DIALECT_V6, + gr.getMetadata(), gr.getBuffer(), NULL, NULL); + check(s); + } + } + else + { + if (cnt) + { + const char* deleteSql = "delete from RDB$DB_CREATORS where RDB$USER_TYPE = ? and RDB$USER = ?"; + secDbContext->att->execute(s, secDbContext->tra, 0, deleteSql, SQL_DIALECT_V6, + gr.getMetadata(), gr.getBuffer(), NULL, NULL); + + j.grantErased = true; + } + + if (!j.grantErased) + { + if (j.allOnAll) + { + const char* all = "ALL"; + + if (j.badGrantor) + { + // msg 246: @1 is not grantor of @2 on @3 to @4. + (Arg::PrivateDyn(246) << j.revoker.c_str() << all << all << j.user).raise(); + } + + // msg 247: Warning: @1 on @2 is not granted to @3. + ERR_post_warning( + Arg::Warning(isc_dyn_miss_priv_warning) << + all << all << j.user); + } + else + { + // msg 247: Warning: @1 on @2 is not granted to @3. + ERR_post_warning(Arg::Warning(isc_dyn_miss_priv_warning) << + privilegeName('C') << "DATABASE" << j.user); + } + } + } + } +} + void GrantRevokeNode::modifyPrivileges(thread_db* tdbb, jrd_tra* transaction, SSHORT option, const GranteeClause* user) { @@ -10467,8 +10567,9 @@ if (!isGrant && !privs) // REVOKE ALL ON ALL { AutoCacheRequest request(tdbb, drq_e_grant3, DYN_REQUESTS); - bool grantErased = false; - bool badGrantor = false; + CreateDbJob all(userType, user); + all.allOnAll = true; + all.revoker = grantorRevoker; FOR(REQUEST_HANDLE request TRANSACTION_HANDLE transaction) PRIV IN RDB$USER_PRIVILEGES @@ -10478,30 +10579,15 @@ if (tdbb->getAttachment()->att_user->locksmith() || grantorRevoker == PRIV.RDB$GRANTOR) { ERASE PRIV; - grantErased = true; + all.grantErased = true; } else - badGrantor = true; + all.badGrantor = true; } END_FOR - const char* all = "ALL"; + createDbJobs.push(all); - if (badGrantor && !grantErased) - { - // msg 246: @1 is not grantor of @2 on @3 to @4. - status_exception::raise(Arg::PrivateDyn(246) << - grantorRevoker.c_str() << all << all << user.c_str()); - } - - if (!grantErased) - { - // msg 247: Warning: @1 on @2 is not granted to @3. - ERR_post_warning( - Arg::Warning(isc_dyn_miss_priv_warning) << - all << all << Arg::Str(user)); - } - return; } @@ -10527,6 +10613,30 @@ } } + if (objType == obj_database && strchr(privileges, 'C')) + { + if (options || grantor) + { + (Arg::Gds(isc_wish_list) << Arg::Gds(isc_random) << + "GRANT/ADMIN OPTION and GRANTED BY not supported for CREATE DATABASE grants").raise(); + } + + if (userType != obj_sql_role && userType != obj_user) + { + (Arg::Gds(isc_wish_list) << Arg::Gds(isc_random) << + "Only grants to USER or ROLE are supported for CREATE DATABASE").raise(); + } + + CreateDbJob job(userType, user); + createDbJobs.push(job); + + char* cPtr = strchr(privileges, 'C'); + size_t len = strlen(cPtr); + memmove(cPtr, cPtr + 1, len); + if (!privileges[0]) + return; + } + char priv[2]; priv[1] = '\0'; Modified: firebird/trunk/src/dsql/DdlNodes.h =================================================================== --- firebird/trunk/src/dsql/DdlNodes.h 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/dsql/DdlNodes.h 2014-09-02 16:55:14 UTC (rev 60025) @@ -41,8 +41,8 @@ class CompoundStmtNode; class RelationSourceNode; class ValueListNode; +class SecDbContext; - struct BoolSourceClause { explicit BoolSourceClause(MemoryPool& p) @@ -135,6 +135,18 @@ }; +class ExecInSecurityDb +{ +public: + virtual ~ExecInSecurityDb() { } + + void executeInSecurityDb(jrd_tra* tra); + +protected: + virtual void runInSecurityDb(SecDbContext* secDbContext) = 0; +}; + + template <typename CreateNode, typename DropNode, ISC_STATUS ERROR_CODE> class RecreateNode : public DdlNode { @@ -1802,7 +1814,7 @@ }; -class MappingNode : public DdlNode +class MappingNode : public DdlNode, private ExecInSecurityDb { public: enum OP {MAP_ADD, MAP_MOD, MAP_RPL, MAP_DROP}; @@ -1836,6 +1848,7 @@ (op == MAP_ADD ? "CREATE" : op == MAP_MOD ? "ALTER" : op == MAP_RPL ? "CREATE OR ALTER" : "DROP"); } + void runInSecurityDb(SecDbContext* secDbContext); private: void addItem(Firebird::string& ddl, const char* text); @@ -1974,11 +1987,12 @@ typedef Firebird::Pair<Firebird::NonPooled<char, ValueListNode*> > PrivilegeClause; typedef Firebird::Pair<Firebird::NonPooled<SSHORT, Firebird::MetaName> > GranteeClause; -class GrantRevokeNode : public DdlNode +class GrantRevokeNode : public DdlNode, private ExecInSecurityDb { public: GrantRevokeNode(MemoryPool& p, bool aIsGrant) : DdlNode(p), + createDbJobs(p), isGrant(aIsGrant), privileges(p), roles(p), @@ -2001,6 +2015,7 @@ statusVector << Firebird::Arg::Gds(isGrant ? isc_dsql_grant_failed : isc_dsql_revoke_failed); } + void runInSecurityDb(SecDbContext* secDbContext); private: void modifyPrivileges(thread_db* tdbb, jrd_tra* transaction, SSHORT option, const GranteeClause* user); @@ -2043,6 +2058,19 @@ return "<Unknown>"; } + struct CreateDbJob + { + CreateDbJob(SSHORT a_userType, const Firebird::MetaName& a_user) + : allOnAll(false), grantErased(false), badGrantor(false), + userType(a_userType), user(a_user) + { } + + bool allOnAll, grantErased, badGrantor; + SSHORT userType; + Firebird::MetaName user, revoker; + }; + Firebird::Array<CreateDbJob> createDbJobs; + public: bool isGrant; Firebird::Array<PrivilegeClause> privileges; Modified: firebird/trunk/src/dsql/parse.y =================================================================== --- firebird/trunk/src/dsql/parse.y 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/dsql/parse.y 2014-09-02 16:55:14 UTC (rev 60025) @@ -976,6 +976,7 @@ %type db_ddl_privilege(<privilegeArray>) db_ddl_privilege($privilegeArray) + | CREATE { $privilegeArray->add(PrivilegeClause('C', NULL)); } | ALTER { $privilegeArray->add(PrivilegeClause('L', NULL)); } | DROP { $privilegeArray->add(PrivilegeClause('O', NULL)); } ; Modified: firebird/trunk/src/include/gen/codetext.h =================================================================== --- firebird/trunk/src/include/gen/codetext.h 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/include/gen/codetext.h 2014-09-02 16:55:14 UTC (rev 60025) @@ -798,6 +798,9 @@ {"dyn_no_priv", 335545094}, {"dsql_cant_grant_option", 335545095}, {"read_conflict", 335545096}, + {"crdb_load", 335545097}, + {"crdb_nodb", 335545098}, + {"crdb_notable", 335545099}, {"gfix_db_name", 335740929}, {"gfix_invalid_sw", 335740930}, {"gfix_incmp_sw", 335740932}, Modified: firebird/trunk/src/include/gen/iberror.h =================================================================== --- firebird/trunk/src/include/gen/iberror.h 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/include/gen/iberror.h 2014-09-02 16:55:14 UTC (rev 60025) @@ -832,6 +832,9 @@ const ISC_STATUS isc_dyn_no_priv = 335545094L; const ISC_STATUS isc_dsql_cant_grant_option = 335545095L; const ISC_STATUS isc_read_conflict = 335545096L; +const ISC_STATUS isc_crdb_load = 335545097L; +const ISC_STATUS isc_crdb_nodb = 335545098L; +const ISC_STATUS isc_crdb_notable = 335545099L; const ISC_STATUS isc_gfix_db_name = 335740929L; const ISC_STATUS isc_gfix_invalid_sw = 335740930L; const ISC_STATUS isc_gfix_incmp_sw = 335740932L; @@ -1290,7 +1293,7 @@ const ISC_STATUS isc_trace_switch_param_miss = 337182758L; const ISC_STATUS isc_trace_param_act_notcompat = 337182759L; const ISC_STATUS isc_trace_mandatory_switch_miss = 337182760L; -const ISC_STATUS isc_err_max = 1234; +const ISC_STATUS isc_err_max = 1237; #else /* c definitions */ @@ -2092,6 +2095,9 @@ #define isc_dyn_no_priv 335545094L #define isc_dsql_cant_grant_option 335545095L #define isc_read_conflict 335545096L +#define isc_crdb_load 335545097L +#define isc_crdb_nodb 335545098L +#define isc_crdb_notable 335545099L #define isc_gfix_db_name 335740929L #define isc_gfix_invalid_sw 335740930L #define isc_gfix_incmp_sw 335740932L @@ -2550,7 +2556,7 @@ #define isc_trace_switch_param_miss 337182758L #define isc_trace_param_act_notcompat 337182759L #define isc_trace_mandatory_switch_miss 337182760L -#define isc_err_max 1234 +#define isc_err_max 1237 #endif Modified: firebird/trunk/src/include/gen/ids.h =================================================================== --- firebird/trunk/src/include/gen/ids.h 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/include/gen/ids.h 2014-09-02 16:55:14 UTC (rev 60025) @@ -660,3 +660,15 @@ const USHORT f_sec_map_to = 7; +// Relation 47 (RDB$DB_CREATORS) + + const USHORT f_crt_user = 0; + const USHORT f_crt_u_type = 1; + + +// Relation 48 (SEC$DB_CREATORS) + + const USHORT f_sec_crt_user = 0; + const USHORT f_sec_crt_u_type = 1; + + Modified: firebird/trunk/src/include/gen/msgs.h =================================================================== --- firebird/trunk/src/include/gen/msgs.h 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/include/gen/msgs.h 2014-09-02 16:55:14 UTC (rev 60025) @@ -801,6 +801,9 @@ {335545094, "There is no privilege for this operation"}, /* dyn_no_priv */ {335545095, "Using GRANT OPTION on @1 not allowed"}, /* dsql_cant_grant_option */ {335545096, "read conflicts with concurrent update"}, /* read_conflict */ + {335545097, "@1 failed when working with CREATE DATABASE grants"}, /* crdb_load */ + {335545098, "CREATE DATABASE grants check is not possible when database @1 is not present"}, /* crdb_nodb */ + {335545099, "CREATE DATABASE grants check is not possible when table RDB$DB_CREATORS is not present in database @1"}, /* crdb_notable */ {335740929, "data base file name (@1) already given"}, /* gfix_db_name */ {335740930, "invalid switch @1"}, /* gfix_invalid_sw */ {335740932, "incompatible switch combination"}, /* gfix_incmp_sw */ Modified: firebird/trunk/src/include/gen/sql_code.h =================================================================== --- firebird/trunk/src/include/gen/sql_code.h 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/include/gen/sql_code.h 2014-09-02 16:55:14 UTC (rev 60025) @@ -797,6 +797,9 @@ {335545094, -901}, /* 774 dyn_no_priv */ {335545095, -901}, /* 775 dsql_cant_grant_option */ {335545096, -904}, /* 776 read_conflict */ + {335545097, -901}, /* 777 crdb_load */ + {335545098, -901}, /* 778 crdb_nodb */ + {335545099, -901}, /* 779 crdb_notable */ {335740929, -901}, /* 1 gfix_db_name */ {335740930, -901}, /* 2 gfix_invalid_sw */ {335740932, -901}, /* 4 gfix_incmp_sw */ Modified: firebird/trunk/src/include/gen/sql_state.h =================================================================== --- firebird/trunk/src/include/gen/sql_state.h 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/include/gen/sql_state.h 2014-09-02 16:55:14 UTC (rev 60025) @@ -797,6 +797,9 @@ {335545094, "42000"}, // 774 dyn_no_priv {335545095, "42000"}, // 775 dsql_cant_grant_option {335545096, "40001"}, // 776 read_conflict + {335545097, "08004"}, // 777 crdb_load + {335545098, "0A000"}, // 778 crdb_nodb + {335545099, "0A000"}, // 779 crdb_notable {335740929, "00000"}, // 1 gfix_db_name {335740930, "00000"}, // 2 gfix_invalid_sw {335740932, "00000"}, // 4 gfix_incmp_sw Modified: firebird/trunk/src/isql/show.epp =================================================================== --- firebird/trunk/src/isql/show.epp 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/isql/show.epp 2014-09-02 16:55:14 UTC (rev 60025) @@ -1452,6 +1452,44 @@ return ps_ERR; END_ERROR + if (obj_type == obj_database || obj_type == 255) + { + FOR PRV IN SEC$DB_CREATORS + SORTED BY PRV.SEC$USER_TYPE, PRV.SEC$USER + + if (first && optional_msg) + isqlGlob.prints(optional_msg); + + first = false; + fb_utils::exact_name(PRV.SEC$USER); + + switch (PRV.SEC$USER_TYPE) + { + case obj_sql_role: + case obj_user: + if (mangle && isqlGlob.db_SQL_dialect > SQL_DIALECT_V6_TRANSITION) + IUTILS_copy_SQL_id(PRV.SEC$USER, SQL_identifier, DBL_QUOTE); + else + strcpy(SQL_identifier, PRV.SEC$USER); + break; + default: + fb_assert(false); + strcpy(SQL_identifier, PRV.SEC$USER); + break; + } + + set_grantee(PRV.SEC$USER_TYPE, SQL_identifier, user_string); + + isqlGlob.printf("GRANT CREATE DATABASE TO %s%s%s", + user_string, terminator, NEWLINE); + + END_FOR + ON_ERROR + ISQL_errmsg(fbStatus); + return ps_ERR; + END_ERROR + } + if (!first) return (SKIP); } Added: firebird/trunk/src/jrd/DbCreators.cpp =================================================================== --- firebird/trunk/src/jrd/DbCreators.cpp (rev 0) +++ firebird/trunk/src/jrd/DbCreators.cpp 2014-09-02 16:55:14 UTC (rev 60025) @@ -0,0 +1,249 @@ +/* + * PROGRAM: JRD access method + * MODULE: DbCreators.cpp + * DESCRIPTION: Checks CREATE DATABASE right (in security.db) + * + * The contents of this file are subject to the Initial + * Developer's Public License Version 1.0 (the "License"); + * you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_idpl. + * + * Software distributed under the License is distributed AS IS, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. + * See the License for the specific language governing rights + * and limitations under the License. + * + * The Original Code was created by Alex Peshkov + * for the Firebird Open Source RDBMS project. + * + * Copyright (c) 2014 Alex Peshkov <peshkoff at mail.ru> + * and all contributors signed below. + * + * All Rights Reserved. + * Contributor(s): ______________________________________. + * + * + */ + +#include "firebird.h" +#include "firebird/Provider.h" +#include "../auth/SecureRemotePassword/Message.h" +#include "gen/iberror.h" + +#include "../jrd/constants.h" +#include "../common/classes/ClumpletWriter.h" +#include "../common/classes/init.h" +#include "../common/classes/Hash.h" +#include "../common/classes/GenericMap.h" +#include "../common/classes/RefMutex.h" +#include "../common/classes/SyncObject.h" +#include "../common/classes/MetaName.h" +#include "../common/isc_s_proto.h" +#include "../common/isc_proto.h" +#include "../common/ThreadStart.h" +#include "../common/db_alias.h" + +#include "../jrd/DbCreators.h" +#include "../jrd/tra.h" +#include "../jrd/ini.h" +#include "gen/ids.h" + +#define DBC_DEBUG(A) + +using namespace Firebird; + +namespace { + +void check(const char* s, IStatus* st) +{ + if (!(st->getStatus() & IStatus::FB_HAS_ERRORS)) + return; + + Arg::StatusVector newStatus(st); + newStatus << Arg::Gds(isc_crdb_load) << s; + newStatus.raise(); +} + +bool openDb(const char* securityDb, RefPtr<IAttachment>& att, RefPtr<ITransaction>& tra) +{ + DispatcherPtr prov; + + ClumpletWriter embeddedSysdba(ClumpletWriter::Tagged, MAX_DPB_SIZE, isc_dpb_version1); + embeddedSysdba.insertString(isc_dpb_user_name, SYSDBA_USER_NAME, fb_strlen(SYSDBA_USER_NAME)); + embeddedSysdba.insertByte(isc_dpb_sec_attach, TRUE); + embeddedSysdba.insertByte(isc_dpb_no_db_triggers, TRUE); + + LocalStatus st; + att = prov->attachDatabase(&st, securityDb, + embeddedSysdba.getBufferLength(), embeddedSysdba.getBuffer()); + if (st.getStatus() & IStatus::FB_HAS_ERRORS) + { + if (!fb_utils::containsErrorCode(st.getErrors(), isc_io_error)) + check("IProvider::attachDatabase", &st); + + // missing security DB - checking granted rights not possible + return false; + } + + ClumpletWriter readOnly(ClumpletWriter::Tpb, MAX_DPB_SIZE, isc_tpb_version1); + readOnly.insertTag(isc_tpb_read); + readOnly.insertTag(isc_tpb_wait); + tra = att->startTransaction(&st, readOnly.getBufferLength(), readOnly.getBuffer()); + check("IAttachment::startTransaction", &st); + + return true; +} + +} // anonymous namespace + + +namespace Jrd { + +bool checkCreateDatabaseGrant(Firebird::string& userName, Firebird::string& trustedRole, + const char* securityDb) +{ + if (userName == SYSDBA_USER_NAME || trustedRole == ADMIN_ROLE) + return true; + + RefPtr<IAttachment> att; + RefPtr<ITransaction> tra; + if (!openDb(securityDb, att, tra)) + return false; + + Message gr; + Field<ISC_SHORT> uType(gr); + Field<Varying> u(gr, MAX_SQL_IDENTIFIER_LEN); + Field<ISC_SHORT> rType(gr); + Field<Varying> r(gr, MAX_SQL_IDENTIFIER_LEN); + uType = obj_user; + u = userName.c_str(); + rType = trustedRole.hasData() ? obj_sql_role : 255; + r = trustedRole.c_str(); + + Message result; + Field<ISC_INT64> cnt(result); + + LocalStatus st; + att->execute(&st, tra, 0, + "select count(*) from RDB$DB_CREATORS" + " where (RDB$USER_TYPE = ? and RDB$USER = ?) or (RDB$USER_TYPE = ? and RDB$USER = ?)", + SQL_DIALECT_V6, gr.getMetadata(), gr.getBuffer(), result.getMetadata(), result.getBuffer()); + if (st.getStatus() & IStatus::FB_HAS_ERRORS) + { + if (fb_utils::containsErrorCode(st.getErrors(), isc_dsql_relation_err)) + { + // isc_dsql_relation_err when exec SQL - i.e. table RDB$DB_CREATORS + // is missing due to non-FB3 security DB + return false; + } + check("IAttachment::execute", &st); + } + + return cnt > 0; +} + + +const Format* DbCreatorsScan::getFormat(thread_db* tdbb, jrd_rel* relation) const +{ + jrd_tra* const transaction = tdbb->getTransaction(); + return transaction->getDbCreatorsList()->getList(tdbb, relation)->getFormat(); +} + +bool DbCreatorsScan::retrieveRecord(thread_db* tdbb, jrd_rel* relation, + FB_UINT64 position, Record* record) const +{ + jrd_tra* const transaction = tdbb->getTransaction(); + return transaction->getDbCreatorsList()->getList(tdbb, relation)->fetch(position, record); +} + +DbCreatorsList::DbCreatorsList(jrd_tra* tra) + : SnapshotData(*tra->tra_pool) +{ } + +RecordBuffer* DbCreatorsList::makeBuffer(thread_db* tdbb) +{ + MemoryPool* const pool = tdbb->getTransaction()->tra_pool; + allocBuffer(tdbb, *pool, rel_sec_db_creators); + return getData(rel_sec_db_creators); +} + +RecordBuffer* DbCreatorsList::getList(thread_db* tdbb, jrd_rel* relation) +{ + fb_assert(relation); + fb_assert(relation->rel_id == rel_sec_db_creators); + + RecordBuffer* buffer = getData(relation); + if (buffer) + { + return buffer; + } + + RefPtr<IAttachment> att; + RefPtr<ITransaction> tra; + const char* dbName = tdbb->getDatabase()->dbb_config->getSecurityDatabase(); + if (!openDb(dbName, att, tra)) + { + // In embedded mode we are not raising any errors - silent return + if (MasterInterfacePtr()->serverMode(-1) < 0) + return makeBuffer(tdbb); + + (Arg::Gds(isc_crdb_nodb) << dbName).raise(); + } + + Message gr; + Field<ISC_SHORT> uType(gr); + Field<Varying> u(gr, MAX_SQL_IDENTIFIER_LEN); + + LocalStatus st; + RefPtr<IResultSet> curs(att->openCursor(&st, tra, 0, + "select RDB$USER_TYPE, RDB$USER from RDB$DB_CREATORS", + SQL_DIALECT_V6, NULL, NULL, gr.getMetadata(), NULL)); + + if (st.getStatus() & IStatus::FB_HAS_ERRORS) + { + if (!fb_utils::containsErrorCode(st.getErrors(), isc_dsql_relation_err)) + check("IAttachment::openCursor", &st); + + // isc_dsql_relation_err when opening cursor - i.e. table + // is missing due to non-FB3 security DB + + // In embedded mode we are not raising any errors - silent return + if (MasterInterfacePtr()->serverMode(-1) < 0) + return makeBuffer(tdbb); + + (Arg::Gds(isc_crdb_notable) << dbName).raise(); + } + + try + { + buffer = makeBuffer(tdbb); + while (curs->fetchNext(&st, gr.getBuffer()) == IStatus::FB_OK) + { + int charset = CS_METADATA; + Record* record = buffer->getTempRecord(); + record->nullify(); + + putField(tdbb, record, + DumpField(f_sec_crt_user, VALUE_STRING, u->len, u->data), + charset); + + SINT64 v = uType; + putField(tdbb, record, + DumpField(f_sec_crt_u_type, VALUE_INTEGER, sizeof(v), &v), + charset); + + buffer->store(record); + } + check("IResultSet::fetchNext", &st); + } + catch (const Exception&) + { + clearSnapshot(); + throw; + } + + return getData(relation); +} + +} // namespace Jrd Property changes on: firebird/trunk/src/jrd/DbCreators.cpp ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/x-c++src \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: firebird/trunk/src/jrd/DbCreators.h =================================================================== --- firebird/trunk/src/jrd/DbCreators.h (rev 0) +++ firebird/trunk/src/jrd/DbCreators.h 2014-09-02 16:55:14 UTC (rev 60025) @@ -0,0 +1,69 @@ +/* + * PROGRAM: JRD access method + * MODULE: DbCreators.h + * DESCRIPTION: GRANT CREATE DATABASE right (in security.db) + * + * The contents of this file are subject to the Initial + * Developer's Public License Version 1.0 (the "License"); + * you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_idpl. + * + * Software distributed under the License is distributed AS IS, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. + * See the License for the specific language governing rights + * and limitations under the License. + * + * The Original Code was created by Alex Peshkov + * for the Firebird Open Source RDBMS project. + * + * Copyright (c) 2014 Alex Peshkov <peshkoff at mail.ru> + * and all contributors signed below. + * + * All Rights Reserved. + * Contributor(s): ______________________________________. + * + * + */ + +#ifndef JRD_DB_CREATORS +#define JRD_DB_CREATORS + +#include "../common/classes/alloc.h" +#include "../common/classes/fb_string.h" +#include "../jrd/recsrc/RecordSource.h" +#include "../jrd/Monitoring.h" + +namespace Jrd { + +bool checkCreateDatabaseGrant(Firebird::string& userName, Firebird::string& trustedRole, + const char* securityDb); + +class DbCreatorsScan: public VirtualTableScan +{ +public: + DbCreatorsScan(CompilerScratch* csb, const Firebird::string& alias, + StreamType stream, jrd_rel* relation) + : VirtualTableScan(csb, alias, stream, relation) + {} + +protected: + const Format* getFormat(thread_db* tdbb, jrd_rel* relation) const; + bool retrieveRecord(thread_db* tdbb, jrd_rel* relation, FB_UINT64 position, Record* record) const; +}; + +class DbCreatorsList : public SnapshotData +{ +public: + explicit DbCreatorsList(jrd_tra* tra); + + RecordBuffer* getList(thread_db* tdbb, jrd_rel* relation); + +private: + RecordBuffer* makeBuffer(thread_db* tdbb); +}; + +} // namespace Jrd + + +#endif // JRD_DB_CREATORS Property changes on: firebird/trunk/src/jrd/DbCreators.h ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/x-chdr \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: firebird/trunk/src/jrd/jrd.cpp =================================================================== --- firebird/trunk/src/jrd/jrd.cpp 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/jrd/jrd.cpp 2014-09-02 16:55:14 UTC (rev 60025) @@ -126,6 +126,7 @@ #include "../jrd/DebugInterface.h" #include "../jrd/EngineInterface.h" #include "../jrd/CryptoManager.h" +#include "../jrd/DbCreators.h" #include "../dsql/dsql.h" #include "../dsql/dsql_proto.h" @@ -995,7 +996,7 @@ static void rollback(thread_db*, jrd_tra*, const bool); static void strip_quotes(string&); static void purge_attachment(thread_db* tdbb, StableAttachmentPart* sAtt, unsigned flags = 0); -static void getUserInfo(UserId&, const DatabaseOptions&, const char*, const char*, const RefPtr<Config>*); +static void getUserInfo(UserId&, const DatabaseOptions&, const char*, const char*, const RefPtr<Config>*, bool); static THREAD_ENTRY_DECLARE shutdown_thread(THREAD_ENTRY_PARAM); @@ -1007,7 +1008,7 @@ m_filename(filename), m_options(options) { - getUserInfo(m_id, *m_options, m_filename, NULL, NULL); + getUserInfo(m_id, *m_options, m_filename, NULL, NULL, false); } @@ -1397,7 +1398,7 @@ } // Check for correct credentials supplied - getUserInfo(userId, options, org_filename.c_str(), expanded_name.c_str(), &config); + getUserInfo(userId, options, org_filename.c_str(), expanded_name.c_str(), &config, false); #ifdef WIN_NT guardDbInit.enter(); // Required to correctly expand name of just created database @@ -2409,7 +2410,7 @@ } // Check for correct credentials supplied - getUserInfo(userId, options, org_filename.c_str(), NULL, &config); + getUserInfo(userId, options, org_filename.c_str(), NULL, &config, true); #ifdef WIN_NT guardDbInit.enter(); // Required to correctly expand name of just created database @@ -7055,9 +7056,8 @@ getUserInfo - @brief Almost stub-like now. - Planned to take into an account mapping of users and groups. - Fills UserId structure with resulting values. + @brief Fills UserId structure with resulting values. + Takes into an account mapping of users and groups. @param user @param options @@ -7065,7 +7065,7 @@ **/ static void getUserInfo(UserId& user, const DatabaseOptions& options, - const char* aliasName, const char* dbName, const RefPtr<Config>* config) + const char* aliasName, const char* dbName, const RefPtr<Config>* config, bool creating) { bool wheel = false; int id = -1, group = -1; // CVC: This var contained trash @@ -7092,6 +7092,12 @@ aliasName, dbName, (config ? (*config)->getSecurityDatabase() : NULL)); ISC_systemToUtf8(name); ISC_systemToUtf8(trusted_role); + + if (creating && config) // when config is NULL we are in error handler + { + if (!checkCreateDatabaseGrant(name, trusted_role, (*config)->getSecurityDatabase())) + (Arg::Gds(isc_no_priv) << "CREATE" << "DATABASE" << aliasName).raise(); + } } else { Modified: firebird/trunk/src/jrd/names.h =================================================================== --- firebird/trunk/src/jrd/names.h 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/jrd/names.h 2014-09-02 16:55:14 UTC (rev 60025) @@ -394,3 +394,8 @@ NAME("SEC$MAP_FROM", nam_sec_map_from) NAME("SEC$MAP_TO_TYPE", nam_sec_map_to_type) NAME("SEC$MAP_TO", nam_sec_map_to) + +NAME("RDB$DB_CREATORS", nam_db_creators) +NAME("SEC$DB_CREATORS", nam_sec_db_creators) +NAME("SEC$USER", nam_sec_user) +NAME("SEC$USER_TYPE", nam_sec_user_type) Modified: firebird/trunk/src/jrd/opt.cpp =================================================================== --- firebird/trunk/src/jrd/opt.cpp 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/jrd/opt.cpp 2014-09-02 16:55:14 UTC (rev 60025) @@ -85,6 +85,7 @@ #include "../jrd/recsrc/RecordSource.h" #include "../jrd/recsrc/Cursor.h" #include "../jrd/Mapping.h" +#include "../jrd/DbCreators.h" #include "../jrd/Optimizer.h" #include "../dsql/BoolNodes.h" @@ -2264,17 +2265,24 @@ else if (relation->isVirtual()) { // Virtual table: monitoring or security - if (relation->rel_id == rel_global_auth_mapping) + switch(relation->rel_id) { + case rel_global_auth_mapping: rsb = FB_NEW(*tdbb->getDefaultPool()) GlobalMappingScan(csb, alias, stream, relation); - } - else if (relation->rel_id == rel_sec_users || relation->rel_id == rel_sec_user_attributes) - { + break; + + case rel_sec_users: + case rel_sec_user_attributes: rsb = FB_NEW(*tdbb->getDefaultPool()) UsersTableScan(csb, alias, stream, relation); - } - else - { + break; + + case rel_sec_db_creators: + rsb = FB_NEW(*tdbb->getDefaultPool()) DbCreatorsScan(csb, alias, stream, relation); + break; + + default: rsb = FB_NEW(*tdbb->getDefaultPool()) MonitoringTableScan(csb, alias, stream, relation); + break; } } else Modified: firebird/trunk/src/jrd/relations.h =================================================================== --- firebird/trunk/src/jrd/relations.h 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/jrd/relations.h 2014-09-02 16:55:14 UTC (rev 60025) @@ -649,7 +649,7 @@ // Relation 46 (SEC$GLOBAL_AUTH_MAPPING) RELATION(nam_sec_global_auth_mapping, rel_global_auth_mapping, ODS_12_0, rel_virtual) - FIELD(f_sec_map_name, nam_sec_map_name, fld_map_name, 1, ODS_12_0) + FIELD(f_sec_map_name, nam_sec_map_name, fld_map_name, 0, ODS_12_0) FIELD(f_sec_map_using, nam_sec_map_using, fld_map_using, 0, ODS_12_0) FIELD(f_sec_map_plugin, nam_sec_map_plugin, fld_map_plugin, 0, ODS_12_0) FIELD(f_sec_map_db, nam_sec_map_db, fld_map_db, 0, ODS_12_0) @@ -658,3 +658,15 @@ FIELD(f_sec_map_to_type, nam_sec_map_to_type, fld_obj_type, 0, ODS_12_0) FIELD(f_sec_map_to, nam_sec_map_to, fld_map_to, 0, ODS_12_0) END_RELATION + +// Relation 47 (RDB$DB_CREATORS) +RELATION(nam_db_creators, rel_db_creators, ODS_12_0, rel_persistent) + FIELD(f_crt_user, nam_user, fld_user, 1, ODS_12_0) + FIELD(f_crt_u_type, nam_user_type, fld_obj_type, 1, ODS_12_0) +END_RELATION + +// Relation 48 (SEC$DB_CREATORS) +RELATION(nam_sec_db_creators, rel_sec_db_creators, ODS_12_0, rel_virtual) + FIELD(f_sec_crt_user, nam_sec_user, fld_user, 0, ODS_12_0) + FIELD(f_sec_crt_u_type, nam_sec_user_type, fld_obj_type, 0, ODS_12_0) +END_RELATION Modified: firebird/trunk/src/jrd/tra.cpp =================================================================== --- firebird/trunk/src/jrd/tra.cpp 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/jrd/tra.cpp 2014-09-02 16:55:14 UTC (rev 60025) @@ -73,6 +73,7 @@ #include "../jrd/Function.h" #include "../jrd/Collation.h" #include "../jrd/Mapping.h" +#include "../jrd/DbCreators.h" const int DYN_MSG_FAC = 8; @@ -3401,7 +3402,16 @@ return tra_mapping_list; } +DbCreatorsList* jrd_tra::getDbCreatorsList() +{ + if (!tra_dbcreators_list) + { + tra_dbcreators_list = FB_NEW(*tra_pool) DbCreatorsList(this); + } + return tra_dbcreators_list; +} + jrd_tra* jrd_tra::getOuter() { jrd_tra* tra = this; Modified: firebird/trunk/src/jrd/tra.h =================================================================== --- firebird/trunk/src/jrd/tra.h 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/jrd/tra.h 2014-09-02 16:55:14 UTC (rev 60025) @@ -71,6 +71,7 @@ class dsql_opn; class UserManagement; class MappingList; +class DbCreatorsList; class thread_db; class SecDbContext @@ -303,6 +304,7 @@ UserManagement* tra_user_management; SecDbContext* tra_sec_db_context; MappingList* tra_mapping_list; + DbCreatorsList* tra_dbcreators_list; MemoryPool* tra_autonomous_pool; USHORT tra_autonomous_cnt; static const USHORT TRA_AUTONOMOUS_PER_POOL = 64; @@ -359,6 +361,7 @@ SecDbContext* setSecDbContext(Firebird::IAttachment* att, Firebird::ITransaction* tra); void eraseSecDbContext(); MappingList* getMappingList(); + DbCreatorsList* getDbCreatorsList(); GenIdCache* getGenIdCache() { Modified: firebird/trunk/src/msgs/facilities2.sql =================================================================== --- firebird/trunk/src/msgs/facilities2.sql 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/msgs/facilities2.sql 2014-09-02 16:55:14 UTC (rev 60025) @@ -1,7 +1,7 @@ /* MAX_NUMBER is the next number to be used, always one more than the highest message number. */ set bulk_insert INSERT INTO FACILITIES (LAST_CHANGE, FACILITY, FAC_CODE, MAX_NUMBER) VALUES (?, ?, ?, ?); -- -('2014-08-27 16:38:00', 'JRD', 0, 777) +('2014-09-02 19:54:57', 'JRD', 0, 780) ('2012-01-23 20:10:30', 'QLI', 1, 532) ('2013-11-13 15:59:10', 'GFIX', 3, 122) ('1996-11-07 13:39:40', 'GPRE', 4, 1) Modified: firebird/trunk/src/msgs/messages2.sql =================================================================== --- firebird/trunk/src/msgs/messages2.sql 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/msgs/messages2.sql 2014-09-02 16:55:14 UTC (rev 60025) @@ -884,6 +884,9 @@ ('dyn_no_priv', NULL, 'scl.epp', NULL, 0, 774, NULL, 'There is no privilege for this operation', NULL, NULL); ('dsql_cant_grant_option', NULL, 'DdlNodes.epp', NULL, 0, 775, NULL, 'Using GRANT OPTION on @1 not allowed', NULL, NULL); ('read_conflict', NULL, NULL, 'vio.cpp', 0, 776, NULL, 'read conflicts with concurrent update', NULL, NULL); +('crdb_load', 'check', 'DbCreators.cpp', NULL, 0, 777, NULL, '@1 failed when working with CREATE DATABASE grants', NULL, NULL); +('crdb_nodb', 'DbCreatorsList::getList', 'DbCreators.cpp', NULL, 0, 778, NULL, 'CREATE DATABASE grants check is not possible when database @1 is not present', NULL, NULL); +('crdb_notable', 'DbCreatorsList::getList', 'DbCreators.cpp', NULL, 0, 779, NULL, 'CREATE DATABASE grants check is not possible when table RDB$DB_CREATORS is not present in database @1', NULL, NULL); -- QLI (NULL, NULL, NULL, NULL, 1, 0, NULL, 'expected type', NULL, NULL); (NULL, NULL, NULL, NULL, 1, 1, NULL, 'bad block type', NULL, NULL); Modified: firebird/trunk/src/msgs/system_errors2.sql =================================================================== --- firebird/trunk/src/msgs/system_errors2.sql 2014-09-02 06:29:44 UTC (rev 60024) +++ firebird/trunk/src/msgs/system_errors2.sql 2014-09-02 16:55:14 UTC (rev 60025) @@ -783,6 +783,9 @@ (-901, '42', '000', 0, 774, 'dyn_no_priv', NULL, NULL) (-901, '42', '000', 0, 775, 'dsql_cant_grant_option', NULL, NULL); (-904, '40', '001', 0, 776, 'read_conflict', NULL, NULL); +(-901, '08', '004', 0, 777, 'crdb_load', NULL, NULL); +(-901, '0A', '000', 0, 778, 'crdb_nodb', NULL, NULL); +(-901, '0A', '000', 0, 779, 'crdb_notable', NULL, NULL); -- GFIX (-901, '00', '000', 3, 1, 'gfix_db_name', NULL, NULL) (-901, '00', '000', 3, 2, 'gfix_invalid_sw', NULL, NULL) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-09-03 01:20:42
|
Revision: 60026 http://sourceforge.net/p/firebird/code/60026 Author: firebirds Date: 2014-09-03 01:20:34 +0000 (Wed, 03 Sep 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-09-02 16:55:14 UTC (rev 60025) +++ firebird/trunk/ChangeLog 2014-09-03 01:20:34 UTC (rev 60026) @@ -1,3 +1,30 @@ + 2014-09-02 16:55 alexpeshkoff + M doc/sql.extensions/README.ddl_access.txt + M lang_helpers/gds_codes.ftn + M lang_helpers/gds_codes.pas + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/parse.y + M src/include/gen/codetext.h + M src/include/gen/iberror.h + M src/include/gen/ids.h + M src/include/gen/msgs.h + M src/include/gen/sql_code.h + M src/include/gen/sql_state.h + M src/isql/show.epp + A src/jrd/DbCreators.cpp + A src/jrd/DbCreators.h + M src/jrd/jrd.cpp + M src/jrd/names.h + M src/jrd/opt.cpp + M src/jrd/relations.h + M src/jrd/tra.cpp + M src/jrd/tra.h + M src/msgs/facilities2.sql + M src/msgs/messages2.sql + M src/msgs/system_errors2.sql +Implemented CORE-4538: Access rights for CREATE DATABASE operator + 2014-09-01 13:22 dimitr M src/jrd/Database.cpp Correction. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-09-02 16:55:14 UTC (rev 60025) +++ firebird/trunk/src/jrd/build_no.h 2014-09-03 01:20:34 UTC (rev 60026) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31323 + FORMAL BUILD NUMBER:31324 */ -#define PRODUCT_VER_STRING "3.0.0.31323" -#define FILE_VER_STRING "WI-T3.0.0.31323" -#define LICENSE_VER_STRING "WI-T3.0.0.31323" -#define FILE_VER_NUMBER 3, 0, 0, 31323 +#define PRODUCT_VER_STRING "3.0.0.31324" +#define FILE_VER_STRING "WI-T3.0.0.31324" +#define LICENSE_VER_STRING "WI-T3.0.0.31324" +#define FILE_VER_NUMBER 3, 0, 0, 31324 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31323" +#define FB_BUILD_NO "31324" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-09-02 16:55:14 UTC (rev 60025) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-09-03 01:20:34 UTC (rev 60026) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31323 +BuildNum=31324 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ale...@us...> - 2014-09-03 13:51:57
|
Revision: 60029 http://sourceforge.net/p/firebird/code/60029 Author: alexpeshkoff Date: 2014-09-03 13:51:48 +0000 (Wed, 03 Sep 2014) Log Message: ----------- Fixed VC10 build Modified Paths: -------------- firebird/trunk/builds/win32/msvc10/engine.vcxproj firebird/trunk/builds/win32/msvc10/engine.vcxproj.filters firebird/trunk/src/remote/os/win32/wnet.cpp Modified: firebird/trunk/builds/win32/msvc10/engine.vcxproj =================================================================== --- firebird/trunk/builds/win32/msvc10/engine.vcxproj 2014-09-03 11:35:12 UTC (rev 60028) +++ firebird/trunk/builds/win32/msvc10/engine.vcxproj 2014-09-03 13:51:48 UTC (rev 60029) @@ -65,6 +65,7 @@ <ClCompile Include="..\..\..\src\jrd\cvt2.cpp" /> <ClCompile Include="..\..\..\src\jrd\Database.cpp" /> <ClCompile Include="..\..\..\src\jrd\DataTypeUtil.cpp" /> + <ClCompile Include="..\..\..\src\jrd\DbCreators.cpp" /> <ClCompile Include="..\..\..\src\jrd\DebugInterface.cpp" /> <ClCompile Include="..\..\..\src\jrd\err.cpp" /> <ClCompile Include="..\..\..\src\jrd\event.cpp" /> Modified: firebird/trunk/builds/win32/msvc10/engine.vcxproj.filters =================================================================== --- firebird/trunk/builds/win32/msvc10/engine.vcxproj.filters 2014-09-03 11:35:12 UTC (rev 60028) +++ firebird/trunk/builds/win32/msvc10/engine.vcxproj.filters 2014-09-03 13:51:48 UTC (rev 60029) @@ -456,6 +456,7 @@ <ClCompile Include="..\..\..\src\jrd\Mapping.cpp"> <Filter>JRD files</Filter> </ClCompile> + <ClCompile Include="..\..\..\src\jrd\DbCreators.cpp" /> </ItemGroup> <ItemGroup> <ClInclude Include="..\..\..\src\jrd\recsrc\RecordSource.h"> @@ -977,6 +978,7 @@ <ClInclude Include="..\..\..\src\jrd\Mapping.h"> <Filter>Header files</Filter> </ClInclude> + <ClInclude Include="..\..\..\src\jrd\Monitoring.h" /> </ItemGroup> <ItemGroup> <None Include="..\..\..\src\dsql\DdlNodes.epp"> Modified: firebird/trunk/src/remote/os/win32/wnet.cpp =================================================================== --- firebird/trunk/src/remote/os/win32/wnet.cpp 2014-09-03 11:35:12 UTC (rev 60028) +++ firebird/trunk/src/remote/os/win32/wnet.cpp 2014-09-03 13:51:48 UTC (rev 60029) @@ -1332,9 +1332,9 @@ { LocalStatus st; port->port_crypt_plugin->decrypt(&st, n, buffer, buffer); - if (!st.isSuccess()) + if (st.getStatus() & IStatus::FB_HAS_ERRORS) { - status_exception::raise(st.get()); + status_exception::raise(&st); } } @@ -1371,9 +1371,9 @@ char* d = b.getBuffer(buffer_length); port->port_crypt_plugin->encrypt(&st, buffer_length, data, d); - if (!st.isSuccess()) + if (st.getStatus() & IStatus::FB_HAS_ERRORS) { - status_exception::raise(st.get()); + status_exception::raise(&st); } data = d; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-09-04 01:29:19
|
Revision: 60030 http://sourceforge.net/p/firebird/code/60030 Author: firebirds Date: 2014-09-04 01:29:12 +0000 (Thu, 04 Sep 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-09-03 13:51:48 UTC (rev 60029) +++ firebird/trunk/ChangeLog 2014-09-04 01:29:12 UTC (rev 60030) @@ -1,3 +1,14 @@ + 2014-09-03 13:51 alexpeshkoff + M builds/win32/msvc10/engine.vcxproj + M builds/win32/msvc10/engine.vcxproj.filters + M src/remote/os/win32/wnet.cpp +Fixed VC10 build + + 2014-09-03 11:35 paulbeach + M builds/posix/darwin.defaults + M builds/posix/prefix.darwin_x86_64 +3.0 Clang build + 2014-09-02 16:55 alexpeshkoff M doc/sql.extensions/README.ddl_access.txt M lang_helpers/gds_codes.ftn Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-09-03 13:51:48 UTC (rev 60029) +++ firebird/trunk/src/jrd/build_no.h 2014-09-04 01:29:12 UTC (rev 60030) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31324 + FORMAL BUILD NUMBER:31326 */ -#define PRODUCT_VER_STRING "3.0.0.31324" -#define FILE_VER_STRING "WI-T3.0.0.31324" -#define LICENSE_VER_STRING "WI-T3.0.0.31324" -#define FILE_VER_NUMBER 3, 0, 0, 31324 +#define PRODUCT_VER_STRING "3.0.0.31326" +#define FILE_VER_STRING "WI-T3.0.0.31326" +#define LICENSE_VER_STRING "WI-T3.0.0.31326" +#define FILE_VER_NUMBER 3, 0, 0, 31326 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31324" +#define FB_BUILD_NO "31326" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-09-03 13:51:48 UTC (rev 60029) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-09-04 01:29:12 UTC (rev 60030) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31324 +BuildNum=31326 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-09-06 01:29:39
|
Revision: 60033 http://sourceforge.net/p/firebird/code/60033 Author: firebirds Date: 2014-09-06 01:29:31 +0000 (Sat, 06 Sep 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-09-05 15:21:10 UTC (rev 60032) +++ firebird/trunk/ChangeLog 2014-09-06 01:29:31 UTC (rev 60033) @@ -1,3 +1,7 @@ + 2014-09-05 15:21 asfernandes + M src/jrd/Database.h +Fixed problem of undefined behaviour when deleting pointer of an incomplete type. + 2014-09-03 13:51 alexpeshkoff M builds/win32/msvc10/engine.vcxproj M builds/win32/msvc10/engine.vcxproj.filters Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-09-05 15:21:10 UTC (rev 60032) +++ firebird/trunk/src/jrd/build_no.h 2014-09-06 01:29:31 UTC (rev 60033) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31326 + FORMAL BUILD NUMBER:31327 */ -#define PRODUCT_VER_STRING "3.0.0.31326" -#define FILE_VER_STRING "WI-T3.0.0.31326" -#define LICENSE_VER_STRING "WI-T3.0.0.31326" -#define FILE_VER_NUMBER 3, 0, 0, 31326 +#define PRODUCT_VER_STRING "3.0.0.31327" +#define FILE_VER_STRING "WI-T3.0.0.31327" +#define LICENSE_VER_STRING "WI-T3.0.0.31327" +#define FILE_VER_NUMBER 3, 0, 0, 31327 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31326" +#define FB_BUILD_NO "31327" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-09-05 15:21:10 UTC (rev 60032) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-09-06 01:29:31 UTC (rev 60033) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31326 +BuildNum=31327 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-09-08 01:25:09
|
Revision: 60036 http://sourceforge.net/p/firebird/code/60036 Author: firebirds Date: 2014-09-08 01:25:04 +0000 (Mon, 08 Sep 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-09-07 19:37:00 UTC (rev 60035) +++ firebird/trunk/ChangeLog 2014-09-08 01:25:04 UTC (rev 60036) @@ -1,3 +1,11 @@ + 2014-09-07 19:37 asfernandes + M src/jrd/TempSpace.cpp + M src/jrd/nbak.cpp + M src/lock/print.cpp + M src/yvalve/utl.cpp + M src/yvalve/why.cpp +Misc. + 2014-09-05 15:21 asfernandes M src/jrd/Database.h Fixed problem of undefined behaviour when deleting pointer of an incomplete type. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-09-07 19:37:00 UTC (rev 60035) +++ firebird/trunk/src/jrd/build_no.h 2014-09-08 01:25:04 UTC (rev 60036) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31327 + FORMAL BUILD NUMBER:31328 */ -#define PRODUCT_VER_STRING "3.0.0.31327" -#define FILE_VER_STRING "WI-T3.0.0.31327" -#define LICENSE_VER_STRING "WI-T3.0.0.31327" -#define FILE_VER_NUMBER 3, 0, 0, 31327 +#define PRODUCT_VER_STRING "3.0.0.31328" +#define FILE_VER_STRING "WI-T3.0.0.31328" +#define LICENSE_VER_STRING "WI-T3.0.0.31328" +#define FILE_VER_NUMBER 3, 0, 0, 31328 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31327" +#define FB_BUILD_NO "31328" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-09-07 19:37:00 UTC (rev 60035) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-09-08 01:25:04 UTC (rev 60036) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31327 +BuildNum=31328 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-09-17 01:22:59
|
Revision: 60043 http://sourceforge.net/p/firebird/code/60043 Author: firebirds Date: 2014-09-17 01:22:54 +0000 (Wed, 17 Sep 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-09-14 19:46:35 UTC (rev 60042) +++ firebird/trunk/ChangeLog 2014-09-17 01:22:54 UTC (rev 60043) @@ -1,3 +1,16 @@ + 2014-09-14 19:46 mapopa + M doc/README.build.posix.html +Update FreeBSD section for trunk in doc/README.build.posix.html + + 2014-09-14 16:25 mapopa + M src/common/isc_sync.cpp +Apply patch from 2.5 branch related to #CORE-3400 http://sourceforge.net/p/firebird/mailman/message/27734396/ + + 2014-09-10 11:55 dimitr + M src/remote/protocol.cpp + M src/remote/protocol.h +Resolved CORE-2897: Don't send full length of field over the wire when field is null. + 2014-09-07 19:37 asfernandes M src/jrd/TempSpace.cpp M src/jrd/nbak.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-09-14 19:46:35 UTC (rev 60042) +++ firebird/trunk/src/jrd/build_no.h 2014-09-17 01:22:54 UTC (rev 60043) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31328 + FORMAL BUILD NUMBER:31331 */ -#define PRODUCT_VER_STRING "3.0.0.31328" -#define FILE_VER_STRING "WI-T3.0.0.31328" -#define LICENSE_VER_STRING "WI-T3.0.0.31328" -#define FILE_VER_NUMBER 3, 0, 0, 31328 +#define PRODUCT_VER_STRING "3.0.0.31331" +#define FILE_VER_STRING "WI-T3.0.0.31331" +#define LICENSE_VER_STRING "WI-T3.0.0.31331" +#define FILE_VER_NUMBER 3, 0, 0, 31331 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31328" +#define FB_BUILD_NO "31331" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-09-14 19:46:35 UTC (rev 60042) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-09-17 01:22:54 UTC (rev 60043) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31328 +BuildNum=31331 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-09-19 01:24:31
|
Revision: 60051 http://sourceforge.net/p/firebird/code/60051 Author: firebirds Date: 2014-09-19 01:24:27 +0000 (Fri, 19 Sep 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-09-18 22:31:53 UTC (rev 60050) +++ firebird/trunk/ChangeLog 2014-09-19 01:24:27 UTC (rev 60051) @@ -1,3 +1,23 @@ + 2014-09-18 22:31 hvlad + M src/common/classes/fb_atomic.h + M src/jrd/Relation.cpp + M src/jrd/Relation.h + M src/jrd/dpm.epp + M src/jrd/ods.cpp + M src/jrd/ods.h + M src/jrd/pag.cpp + M src/jrd/pag.h + M src/jrd/pag_proto.h + M src/msgs/facilities2.sql + M src/msgs/messages2.sql + M src/utilities/gstat/dba.epp +Implement improvement CORE-4556 : Allocate data pages in group of sequential ordered pages (extents) +Validation code will follow + + 2014-09-18 15:55 asfernandes + M src/jrd/dfw.epp +Fixed CORE-4555 - DDL trigger remains active after dropped. + 2014-09-14 19:46 mapopa M doc/README.build.posix.html Update FreeBSD section for trunk in doc/README.build.posix.html Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-09-18 22:31:53 UTC (rev 60050) +++ firebird/trunk/src/jrd/build_no.h 2014-09-19 01:24:27 UTC (rev 60051) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31331 + FORMAL BUILD NUMBER:31333 */ -#define PRODUCT_VER_STRING "3.0.0.31331" -#define FILE_VER_STRING "WI-T3.0.0.31331" -#define LICENSE_VER_STRING "WI-T3.0.0.31331" -#define FILE_VER_NUMBER 3, 0, 0, 31331 +#define PRODUCT_VER_STRING "3.0.0.31333" +#define FILE_VER_STRING "WI-T3.0.0.31333" +#define LICENSE_VER_STRING "WI-T3.0.0.31333" +#define FILE_VER_NUMBER 3, 0, 0, 31333 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31331" +#define FB_BUILD_NO "31333" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-09-18 22:31:53 UTC (rev 60050) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-09-19 01:24:27 UTC (rev 60051) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31331 +BuildNum=31333 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-09-23 01:19:52
|
Revision: 60053 http://sourceforge.net/p/firebird/code/60053 Author: firebirds Date: 2014-09-23 01:19:48 +0000 (Tue, 23 Sep 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-09-22 19:25:40 UTC (rev 60052) +++ firebird/trunk/ChangeLog 2014-09-23 01:19:48 UTC (rev 60053) @@ -1,3 +1,7 @@ + 2014-09-22 19:25 skidder + M src/jrd/dpm.epp +Fix warnings + 2014-09-18 22:31 hvlad M src/common/classes/fb_atomic.h M src/jrd/Relation.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-09-22 19:25:40 UTC (rev 60052) +++ firebird/trunk/src/jrd/build_no.h 2014-09-23 01:19:48 UTC (rev 60053) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31333 + FORMAL BUILD NUMBER:31334 */ -#define PRODUCT_VER_STRING "3.0.0.31333" -#define FILE_VER_STRING "WI-T3.0.0.31333" -#define LICENSE_VER_STRING "WI-T3.0.0.31333" -#define FILE_VER_NUMBER 3, 0, 0, 31333 +#define PRODUCT_VER_STRING "3.0.0.31334" +#define FILE_VER_STRING "WI-T3.0.0.31334" +#define LICENSE_VER_STRING "WI-T3.0.0.31334" +#define FILE_VER_NUMBER 3, 0, 0, 31334 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31333" +#define FB_BUILD_NO "31334" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-09-22 19:25:40 UTC (rev 60052) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-09-23 01:19:48 UTC (rev 60053) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31333 +BuildNum=31334 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-09-27 01:20:23
|
Revision: 60055 http://sourceforge.net/p/firebird/code/60055 Author: firebirds Date: 2014-09-27 01:20:19 +0000 (Sat, 27 Sep 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-09-26 13:34:30 UTC (rev 60054) +++ firebird/trunk/ChangeLog 2014-09-27 01:20:19 UTC (rev 60055) @@ -1,3 +1,7 @@ + 2014-09-26 13:34 mapopa + M doc/README.build.msvc.html +Update Visual Studio Expresss 20xx Download link + 2014-09-22 19:25 skidder M src/jrd/dpm.epp Fix warnings Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-09-26 13:34:30 UTC (rev 60054) +++ firebird/trunk/src/jrd/build_no.h 2014-09-27 01:20:19 UTC (rev 60055) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31334 + FORMAL BUILD NUMBER:31335 */ -#define PRODUCT_VER_STRING "3.0.0.31334" -#define FILE_VER_STRING "WI-T3.0.0.31334" -#define LICENSE_VER_STRING "WI-T3.0.0.31334" -#define FILE_VER_NUMBER 3, 0, 0, 31334 +#define PRODUCT_VER_STRING "3.0.0.31335" +#define FILE_VER_STRING "WI-T3.0.0.31335" +#define LICENSE_VER_STRING "WI-T3.0.0.31335" +#define FILE_VER_NUMBER 3, 0, 0, 31335 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31334" +#define FB_BUILD_NO "31335" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-09-26 13:34:30 UTC (rev 60054) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-09-27 01:20:19 UTC (rev 60055) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31334 +BuildNum=31335 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-09-29 01:18:12
|
Revision: 60057 http://sourceforge.net/p/firebird/code/60057 Author: firebirds Date: 2014-09-29 01:18:08 +0000 (Mon, 29 Sep 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-09-28 09:43:57 UTC (rev 60056) +++ firebird/trunk/ChangeLog 2014-09-29 01:18:08 UTC (rev 60057) @@ -1,3 +1,18 @@ + 2014-09-28 09:43 hvlad + M src/alice/alice.cpp + M src/alice/alice.h + M src/alice/exe.cpp + M src/jrd/Attachment.h + M src/jrd/inf.cpp + M src/jrd/inf_pub.h + M src/jrd/jrd.cpp + M src/jrd/jrd.h + M src/jrd/validation.cpp + A src/jrd/validation.h + M src/msgs/facilities2.sql + M src/msgs/messages2.sql +Improvement CORE-4562 : Split all validation messages on critical and minor ones + 2014-09-26 13:34 mapopa M doc/README.build.msvc.html Update Visual Studio Expresss 20xx Download link Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-09-28 09:43:57 UTC (rev 60056) +++ firebird/trunk/src/jrd/build_no.h 2014-09-29 01:18:08 UTC (rev 60057) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31335 + FORMAL BUILD NUMBER:31336 */ -#define PRODUCT_VER_STRING "3.0.0.31335" -#define FILE_VER_STRING "WI-T3.0.0.31335" -#define LICENSE_VER_STRING "WI-T3.0.0.31335" -#define FILE_VER_NUMBER 3, 0, 0, 31335 +#define PRODUCT_VER_STRING "3.0.0.31336" +#define FILE_VER_STRING "WI-T3.0.0.31336" +#define LICENSE_VER_STRING "WI-T3.0.0.31336" +#define FILE_VER_NUMBER 3, 0, 0, 31336 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31335" +#define FB_BUILD_NO "31336" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-09-28 09:43:57 UTC (rev 60056) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-09-29 01:18:08 UTC (rev 60057) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31335 +BuildNum=31336 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |