From: <fir...@us...> - 2015-06-06 00:13:32
|
Revision: 61734 http://sourceforge.net/p/firebird/code/61734 Author: firebirds Date: 2015-06-06 00:13:30 +0000 (Sat, 06 Jun 2015) 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 2015-06-05 18:26:36 UTC (rev 61733) +++ firebird/trunk/ChangeLog 2015-06-06 00:13:30 UTC (rev 61734) @@ -1,3 +1,29 @@ + 2015-06-05 18:26 asfernandes + M src/dsql/AggNodes.cpp + M src/dsql/AggNodes.h + M src/dsql/BoolNodes.cpp + M src/dsql/BoolNodes.h + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/ExprNodes.cpp + M src/dsql/ExprNodes.h + A src/dsql/NodePrinter.h + M src/dsql/Nodes.h + M src/dsql/PackageNodes.epp + M src/dsql/PackageNodes.h + M src/dsql/StmtNodes.cpp + M src/dsql/StmtNodes.h + M src/dsql/WinNodes.cpp + M src/dsql/WinNodes.h + M src/dsql/dsql.h + M src/jrd/ExtEngineManager.cpp + M src/jrd/RecordSourceNodes.cpp + M src/jrd/RecordSourceNodes.h + M src/jrd/evl_proto.h + M src/jrd/exe.h + M src/jrd/par_proto.h +Add code to print the parser/executable tree to XML for debugging purposes. + 2015-06-04 14:10 alexpeshkoff M src/dsql/DdlNodes.epp Postfix for CORE-4821: fixed segfault in REVOKE ALL ON ALL Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-05 18:26:36 UTC (rev 61733) +++ firebird/trunk/src/jrd/build_no.h 2015-06-06 00:13:30 UTC (rev 61734) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31860 + FORMAL BUILD NUMBER:31861 */ -#define PRODUCT_VER_STRING "3.0.0.31860" -#define FILE_VER_STRING "WI-T3.0.0.31860" -#define LICENSE_VER_STRING "WI-T3.0.0.31860" -#define FILE_VER_NUMBER 3, 0, 0, 31860 +#define PRODUCT_VER_STRING "3.0.0.31861" +#define FILE_VER_STRING "WI-T3.0.0.31861" +#define LICENSE_VER_STRING "WI-T3.0.0.31861" +#define FILE_VER_NUMBER 3, 0, 0, 31861 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31860" +#define FB_BUILD_NO "31861" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-05 18:26:36 UTC (rev 61733) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-06 00:13:30 UTC (rev 61734) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31860 +BuildNum=31861 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <asf...@us...> - 2015-06-07 17:13:30
|
Revision: 61738 http://sourceforge.net/p/firebird/code/61738 Author: asfernandes Date: 2015-06-07 17:13:28 +0000 (Sun, 07 Jun 2015) Log Message: ----------- Add travis files on request of Egor. Added Paths: ----------- firebird/trunk/.travis.yml firebird/trunk/README.md Added: firebird/trunk/.travis.yml =================================================================== --- firebird/trunk/.travis.yml (rev 0) +++ firebird/trunk/.travis.yml 2015-06-07 17:13:28 UTC (rev 61738) @@ -0,0 +1,17 @@ +language: cpp + +notifications: + email: false + +sudo: required + +before_install: + - wget http://www.cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.sh + - sudo sh cmake-3.2.3-Linux-x86_64.sh --skip-license --prefix=/usr + +script: + - cmake -H. -Bbuild + - cd build + - make + #- ./autogen.sh + #- make Property changes on: firebird/trunk/.travis.yml ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: firebird/trunk/README.md =================================================================== --- firebird/trunk/README.md (rev 0) +++ firebird/trunk/README.md 2015-06-07 17:13:28 UTC (rev 61738) @@ -0,0 +1,6 @@ +# firebird +Firebird git mirror + +CI test + + Property changes on: firebird/trunk/README.md ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2015-06-08 00:09:23
|
Revision: 61749 http://sourceforge.net/p/firebird/code/61749 Author: firebirds Date: 2015-06-08 00:09:20 +0000 (Mon, 08 Jun 2015) 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 2015-06-07 23:41:57 UTC (rev 61748) +++ firebird/trunk/ChangeLog 2015-06-08 00:09:20 UTC (rev 61749) @@ -1,3 +1,45 @@ + 2015-06-07 23:41 asfernandes + M src/jrd/RecordSourceNodes.cpp +Fixed CORE-4807 - Regression: List of aggregation is not checked properly. + + 2015-06-07 19:24 mapopa + M src/common/isc_sync.cpp +Create semaphores with 0660 permissions +Yes, a bit later the access mode is set to the one of the +security database, but in the mean time someone evil could +find some use of an open (0666) semaphore array +Author: Damyan Ivanov <dm...@de...> +https://anonscm.debian.org/cgit/pkg-firebird/3.0.git/plain/debian/patches/tighten-sem-perms.patch + + 2015-06-07 19:06 mapopa + M src/gpre/gpreswi.h + M src/include/gen/msgs.h + M src/msgs/history2.sql + M src/msgs/messages2.sql + M src/msgs/transmsgs.de_DE2.sql + M src/msgs/transmsgs.fr_FR2.sql +a couple of spelling corrections from debian 3.0 +supress → suppress +priviledge → privilege + + 2015-06-07 18:34 mapopa + M src/jrd/recsrc/HashJoin.cpp + USE_QSORT_CTX on Debian/kFreeBSD If qsort_r is available, use it on all platforms. Use the platform-specific + code otherwise. Patch https://anonscm.debian.org/cgit/pkg-firebird/3.0.git/commit/?id=feac4328eb7a300c59fbb57c05618d710c9981d2 + + 2015-06-07 18:11 egorpugin + M .travis.yml +[ci] Use default build system until cmake is fixed. + + 2015-06-07 17:17 asfernandes + M README.md +Correction. + + 2015-06-07 17:13 asfernandes + A .travis.yml + A README.md +Add travis files on request of Egor. + 2015-06-05 18:26 asfernandes M src/dsql/AggNodes.cpp M src/dsql/AggNodes.h Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-07 23:41:57 UTC (rev 61748) +++ firebird/trunk/src/jrd/build_no.h 2015-06-08 00:09:20 UTC (rev 61749) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31861 + FORMAL BUILD NUMBER:31868 */ -#define PRODUCT_VER_STRING "3.0.0.31861" -#define FILE_VER_STRING "WI-T3.0.0.31861" -#define LICENSE_VER_STRING "WI-T3.0.0.31861" -#define FILE_VER_NUMBER 3, 0, 0, 31861 +#define PRODUCT_VER_STRING "3.0.0.31868" +#define FILE_VER_STRING "WI-T3.0.0.31868" +#define LICENSE_VER_STRING "WI-T3.0.0.31868" +#define FILE_VER_NUMBER 3, 0, 0, 31868 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31861" +#define FB_BUILD_NO "31868" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-07 23:41:57 UTC (rev 61748) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-08 00:09:20 UTC (rev 61749) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31861 +BuildNum=31868 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...> - 2015-06-09 00:11:34
|
Revision: 61772 http://sourceforge.net/p/firebird/code/61772 Author: firebirds Date: 2015-06-09 00:11:31 +0000 (Tue, 09 Jun 2015) 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 2015-06-08 19:42:05 UTC (rev 61771) +++ firebird/trunk/ChangeLog 2015-06-09 00:11:31 UTC (rev 61772) @@ -1,3 +1,22 @@ + 2015-06-08 12:13 dimitr + M src/dsql/NodePrinter.h +Fixed Windows build. + + 2015-06-08 11:43 hvlad + M src/common/classes/ClumpletReader.h +Disable debug code in release builds + + 2015-06-08 11:05 alexpeshkoff + M src/utilities/gsec/gsec.cpp +Fixed regression in gsec, reported privately by Adriano - error parameters are reported as garbage + + 2015-06-08 10:55 dimitr + M builds/win32/msvc10/common.vcxproj + M builds/win32/msvc10/common.vcxproj.filters + M builds/win32/msvc12/common.vcxproj + M builds/win32/msvc12/common.vcxproj.filters +Fixed Windows build. + 2015-06-07 23:41 asfernandes M src/jrd/RecordSourceNodes.cpp Fixed CORE-4807 - Regression: List of aggregation is not checked properly. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-08 19:42:05 UTC (rev 61771) +++ firebird/trunk/src/jrd/build_no.h 2015-06-09 00:11:31 UTC (rev 61772) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31868 + FORMAL BUILD NUMBER:31872 */ -#define PRODUCT_VER_STRING "3.0.0.31868" -#define FILE_VER_STRING "WI-T3.0.0.31868" -#define LICENSE_VER_STRING "WI-T3.0.0.31868" -#define FILE_VER_NUMBER 3, 0, 0, 31868 +#define PRODUCT_VER_STRING "3.0.0.31872" +#define FILE_VER_STRING "WI-T3.0.0.31872" +#define LICENSE_VER_STRING "WI-T3.0.0.31872" +#define FILE_VER_NUMBER 3, 0, 0, 31872 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31868" +#define FB_BUILD_NO "31872" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-08 19:42:05 UTC (rev 61771) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-09 00:11:31 UTC (rev 61772) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31868 +BuildNum=31872 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...> - 2015-06-10 00:10:15
|
Revision: 61775 http://sourceforge.net/p/firebird/code/61775 Author: firebirds Date: 2015-06-10 00:10:13 +0000 (Wed, 10 Jun 2015) 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 2015-06-09 13:30:13 UTC (rev 61774) +++ firebird/trunk/ChangeLog 2015-06-10 00:10:13 UTC (rev 61775) @@ -1,3 +1,8 @@ + 2015-06-09 13:18 alexpeshkoff + M src/jrd/scl.epp + M src/jrd/scl.h +Fixed CORE-4802: GRANT UPDATE(<some_column>) on <T> acts like grant update on ALL columns of <T> + 2015-06-08 12:13 dimitr M src/dsql/NodePrinter.h Fixed Windows build. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-09 13:30:13 UTC (rev 61774) +++ firebird/trunk/src/jrd/build_no.h 2015-06-10 00:10:13 UTC (rev 61775) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31872 + FORMAL BUILD NUMBER:31873 */ -#define PRODUCT_VER_STRING "3.0.0.31872" -#define FILE_VER_STRING "WI-T3.0.0.31872" -#define LICENSE_VER_STRING "WI-T3.0.0.31872" -#define FILE_VER_NUMBER 3, 0, 0, 31872 +#define PRODUCT_VER_STRING "3.0.0.31873" +#define FILE_VER_STRING "WI-T3.0.0.31873" +#define LICENSE_VER_STRING "WI-T3.0.0.31873" +#define FILE_VER_NUMBER 3, 0, 0, 31873 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31872" +#define FB_BUILD_NO "31873" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-09 13:30:13 UTC (rev 61774) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-10 00:10:13 UTC (rev 61775) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31872 +BuildNum=31873 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...> - 2015-06-11 00:10:31
|
Revision: 61784 http://sourceforge.net/p/firebird/code/61784 Author: firebirds Date: 2015-06-11 00:10:28 +0000 (Thu, 11 Jun 2015) 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 2015-06-10 15:24:42 UTC (rev 61783) +++ firebird/trunk/ChangeLog 2015-06-11 00:10:28 UTC (rev 61784) @@ -1,3 +1,18 @@ + 2015-06-10 13:42 alexpeshkoff + M src/dsql/DdlNodes.epp +Fixed CORE-4831: Revoke all on all from role <R> -- failed with "SQL role <R> does not exist in security database" + + 2015-06-10 13:10 alexpeshkoff + M src/isql/isql.epp +Enhance metadata display - show charset only for fields where it makes sense + + 2015-06-10 12:27 alexpeshkoff + M src/common/Tokens.cpp + M src/common/Tokens.h + M src/isql/isql.epp + M src/yvalve/preparse.cpp +Fixed regression, caused by fix for CORE-4811 - error parsing pagesize=N without spaces + 2015-06-09 13:18 alexpeshkoff M src/jrd/scl.epp M src/jrd/scl.h Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-10 15:24:42 UTC (rev 61783) +++ firebird/trunk/src/jrd/build_no.h 2015-06-11 00:10:28 UTC (rev 61784) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31873 + FORMAL BUILD NUMBER:31876 */ -#define PRODUCT_VER_STRING "3.0.0.31873" -#define FILE_VER_STRING "WI-T3.0.0.31873" -#define LICENSE_VER_STRING "WI-T3.0.0.31873" -#define FILE_VER_NUMBER 3, 0, 0, 31873 +#define PRODUCT_VER_STRING "3.0.0.31876" +#define FILE_VER_STRING "WI-T3.0.0.31876" +#define LICENSE_VER_STRING "WI-T3.0.0.31876" +#define FILE_VER_NUMBER 3, 0, 0, 31876 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31873" +#define FB_BUILD_NO "31876" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-10 15:24:42 UTC (rev 61783) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-11 00:10:28 UTC (rev 61784) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31873 +BuildNum=31876 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...> - 2015-06-12 00:11:12
|
Revision: 61797 http://sourceforge.net/p/firebird/code/61797 Author: firebirds Date: 2015-06-12 00:11:09 +0000 (Fri, 12 Jun 2015) 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 2015-06-11 12:26:33 UTC (rev 61796) +++ firebird/trunk/ChangeLog 2015-06-12 00:11:09 UTC (rev 61797) @@ -1,3 +1,11 @@ + 2015-06-11 06:42 robocop + M src/common/Tokens.cpp + M src/common/utils.cpp + M src/dsql/DdlNodes.h + M src/dsql/ExprNodes.cpp + M src/dsql/NodePrinter.h +Misc. + 2015-06-10 13:42 alexpeshkoff M src/dsql/DdlNodes.epp Fixed CORE-4831: Revoke all on all from role <R> -- failed with "SQL role <R> does not exist in security database" Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-11 12:26:33 UTC (rev 61796) +++ firebird/trunk/src/jrd/build_no.h 2015-06-12 00:11:09 UTC (rev 61797) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31876 + FORMAL BUILD NUMBER:31877 */ -#define PRODUCT_VER_STRING "3.0.0.31876" -#define FILE_VER_STRING "WI-T3.0.0.31876" -#define LICENSE_VER_STRING "WI-T3.0.0.31876" -#define FILE_VER_NUMBER 3, 0, 0, 31876 +#define PRODUCT_VER_STRING "3.0.0.31877" +#define FILE_VER_STRING "WI-T3.0.0.31877" +#define LICENSE_VER_STRING "WI-T3.0.0.31877" +#define FILE_VER_NUMBER 3, 0, 0, 31877 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31876" +#define FB_BUILD_NO "31877" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-11 12:26:33 UTC (rev 61796) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-12 00:11:09 UTC (rev 61797) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31876 +BuildNum=31877 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ego...@us...> - 2015-06-12 14:32:15
|
Revision: 61804 http://sourceforge.net/p/firebird/code/61804 Author: egorpugin Date: 2015-06-12 14:32:13 +0000 (Fri, 12 Jun 2015) Log Message: ----------- [ci] Initial travis-ci config. Modified Paths: -------------- firebird/trunk/.travis.yml firebird/trunk/README.md Added Paths: ----------- firebird/trunk/travis.sh Modified: firebird/trunk/.travis.yml =================================================================== --- firebird/trunk/.travis.yml 2015-06-12 12:10:26 UTC (rev 61803) +++ firebird/trunk/.travis.yml 2015-06-12 14:32:13 UTC (rev 61804) @@ -5,11 +5,24 @@ sudo: required -before_install: +install: - wget http://www.cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.sh - sudo sh cmake-3.2.3-Linux-x86_64.sh --skip-license --prefix=/usr - sudo apt-get install libtommath0 libtommath-dev + - sudo python -m pip install Mako fdb + - svn co http://svn.code.sf.net/p/firebird/code/qa/fbtest/trunk/ fbtest + - svn co http://svn.code.sf.net/p/firebird/code/qa/fbt-repository/trunk/ fbtest/fbt script: - ./autogen.sh - make + - sudo echo `pwd`/gen/Release/firebird/lib | sudo tee --append /etc/ld.so.conf + - sudo ldconfig + - sudo ./gen/Release/firebird/bin/gsec -add sysdba -pw masterkey + - chmod 777 travis.sh + - sudo ./travis.sh start_server & + - ./travis.sh dummy_output & + - ./travis.sh skip_tests + - sleep 3 + - cd fbtest/fbt + - python ../fbtest.py -d `pwd`/tmp -b `pwd`/../../gen/Release/firebird/bin -v -x -k ../../skip.txt Modified: firebird/trunk/README.md =================================================================== --- firebird/trunk/README.md 2015-06-12 12:10:26 UTC (rev 61803) +++ firebird/trunk/README.md 2015-06-12 14:32:13 UTC (rev 61804) @@ -1,6 +1,4 @@ -# firebird +[](https://travis-ci.org/asfernandes/firebird) + +# Firebird Firebird git mirror - -CI test - - Added: firebird/trunk/travis.sh =================================================================== --- firebird/trunk/travis.sh (rev 0) +++ firebird/trunk/travis.sh 2015-06-12 14:32:13 UTC (rev 61804) @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +start_server() { + until ./gen/Release/firebird/bin/firebird; do + echo "Firebird crashed with exit code $?. Restarting..." >&2 + done +} + +dummy_output() { + while true; do + sleep 9m + echo "dummy output" + done +} + +skip_tests() { + SKIP=skip.txt + echo bugs.core_0870 >> $SKIP +} + +set -e +#set -x +eval "$1" Property changes on: firebird/trunk/travis.sh ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +LF \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2015-06-13 00:10:06
|
Revision: 61805 http://sourceforge.net/p/firebird/code/61805 Author: firebirds Date: 2015-06-13 00:10:03 +0000 (Sat, 13 Jun 2015) 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 2015-06-12 14:32:13 UTC (rev 61804) +++ firebird/trunk/ChangeLog 2015-06-13 00:10:03 UTC (rev 61805) @@ -1,3 +1,13 @@ + 2015-06-12 14:32 egorpugin + M .travis.yml + M README.md + A travis.sh +[ci] Initial travis-ci config. + + 2015-06-12 09:06 paulbeach + M src/common/ThreadStart.cpp +Stack size too small on HPPA and Itanium + 2015-06-11 06:42 robocop M src/common/Tokens.cpp M src/common/utils.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-12 14:32:13 UTC (rev 61804) +++ firebird/trunk/src/jrd/build_no.h 2015-06-13 00:10:03 UTC (rev 61805) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31877 + FORMAL BUILD NUMBER:31879 */ -#define PRODUCT_VER_STRING "3.0.0.31877" -#define FILE_VER_STRING "WI-T3.0.0.31877" -#define LICENSE_VER_STRING "WI-T3.0.0.31877" -#define FILE_VER_NUMBER 3, 0, 0, 31877 +#define PRODUCT_VER_STRING "3.0.0.31879" +#define FILE_VER_STRING "WI-T3.0.0.31879" +#define LICENSE_VER_STRING "WI-T3.0.0.31879" +#define FILE_VER_NUMBER 3, 0, 0, 31879 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31877" +#define FB_BUILD_NO "31879" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-12 14:32:13 UTC (rev 61804) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-13 00:10:03 UTC (rev 61805) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31877 +BuildNum=31879 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...> - 2015-06-14 00:09:52
|
Revision: 61809 http://sourceforge.net/p/firebird/code/61809 Author: firebirds Date: 2015-06-14 00:09:49 +0000 (Sun, 14 Jun 2015) 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 2015-06-13 19:00:28 UTC (rev 61808) +++ firebird/trunk/ChangeLog 2015-06-14 00:09:49 UTC (rev 61809) @@ -1,3 +1,19 @@ + 2015-06-13 19:00 asfernandes + M src/common/Tokens.cpp + M src/common/utils.cpp + M src/dsql/DdlNodes.epp + M src/dsql/ExprNodes.cpp + M src/dsql/NodePrinter.h + M src/isql/isql.epp + M src/remote/client/interface.cpp + M src/remote/remote.cpp + M src/remote/remote.h +Misc. + + 2015-06-13 09:39 egorpugin + M .travis.yml +[ci] Build only master branch. + 2015-06-12 14:32 egorpugin M .travis.yml M README.md Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-13 19:00:28 UTC (rev 61808) +++ firebird/trunk/src/jrd/build_no.h 2015-06-14 00:09:49 UTC (rev 61809) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31879 + FORMAL BUILD NUMBER:31881 */ -#define PRODUCT_VER_STRING "3.0.0.31879" -#define FILE_VER_STRING "WI-T3.0.0.31879" -#define LICENSE_VER_STRING "WI-T3.0.0.31879" -#define FILE_VER_NUMBER 3, 0, 0, 31879 +#define PRODUCT_VER_STRING "3.0.0.31881" +#define FILE_VER_STRING "WI-T3.0.0.31881" +#define LICENSE_VER_STRING "WI-T3.0.0.31881" +#define FILE_VER_NUMBER 3, 0, 0, 31881 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31879" +#define FB_BUILD_NO "31881" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-13 19:00:28 UTC (rev 61808) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-14 00:09:49 UTC (rev 61809) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31879 +BuildNum=31881 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...> - 2015-06-15 00:10:57
|
Revision: 61826 http://sourceforge.net/p/firebird/code/61826 Author: firebirds Date: 2015-06-15 00:10:54 +0000 (Mon, 15 Jun 2015) 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 2015-06-14 16:42:40 UTC (rev 61825) +++ firebird/trunk/ChangeLog 2015-06-15 00:10:54 UTC (rev 61826) @@ -1,3 +1,11 @@ + 2015-06-14 11:35 dimitr + M src/isql/show.epp +Yet another fix for CORE-4839. + + 2015-06-14 08:32 dimitr + M src/isql/extract.epp +This should fix CORE-4839: SHOW GRANTS does not display info about exceptions which were granted to user. + 2015-06-13 19:00 asfernandes M src/common/Tokens.cpp M src/common/utils.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-14 16:42:40 UTC (rev 61825) +++ firebird/trunk/src/jrd/build_no.h 2015-06-15 00:10:54 UTC (rev 61826) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31881 + FORMAL BUILD NUMBER:31883 */ -#define PRODUCT_VER_STRING "3.0.0.31881" -#define FILE_VER_STRING "WI-T3.0.0.31881" -#define LICENSE_VER_STRING "WI-T3.0.0.31881" -#define FILE_VER_NUMBER 3, 0, 0, 31881 +#define PRODUCT_VER_STRING "3.0.0.31883" +#define FILE_VER_STRING "WI-T3.0.0.31883" +#define LICENSE_VER_STRING "WI-T3.0.0.31883" +#define FILE_VER_NUMBER 3, 0, 0, 31883 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31881" +#define FB_BUILD_NO "31883" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-14 16:42:40 UTC (rev 61825) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-15 00:10:54 UTC (rev 61826) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31881 +BuildNum=31883 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...> - 2015-06-16 00:09:32
|
Revision: 61832 http://sourceforge.net/p/firebird/code/61832 Author: firebirds Date: 2015-06-16 00:09:30 +0000 (Tue, 16 Jun 2015) 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 2015-06-15 15:22:09 UTC (rev 61831) +++ firebird/trunk/ChangeLog 2015-06-16 00:09:30 UTC (rev 61832) @@ -1,3 +1,11 @@ + 2015-06-15 15:22 mapopa + M builds/posix/postfix.darwin +gds_relay was removed by Alex + + 2015-06-15 15:20 mapopa + M builds/posix/darwin.defaults +Apply libreoffice patch in trunk + 2015-06-14 11:35 dimitr M src/isql/show.epp Yet another fix for CORE-4839. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-15 15:22:09 UTC (rev 61831) +++ firebird/trunk/src/jrd/build_no.h 2015-06-16 00:09:30 UTC (rev 61832) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31883 + FORMAL BUILD NUMBER:31885 */ -#define PRODUCT_VER_STRING "3.0.0.31883" -#define FILE_VER_STRING "WI-T3.0.0.31883" -#define LICENSE_VER_STRING "WI-T3.0.0.31883" -#define FILE_VER_NUMBER 3, 0, 0, 31883 +#define PRODUCT_VER_STRING "3.0.0.31885" +#define FILE_VER_STRING "WI-T3.0.0.31885" +#define LICENSE_VER_STRING "WI-T3.0.0.31885" +#define FILE_VER_NUMBER 3, 0, 0, 31885 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31883" +#define FB_BUILD_NO "31885" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-15 15:22:09 UTC (rev 61831) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-16 00:09:30 UTC (rev 61832) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31883 +BuildNum=31885 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...> - 2015-06-17 00:10:18
|
Revision: 61837 http://sourceforge.net/p/firebird/code/61837 Author: firebirds Date: 2015-06-17 00:10:15 +0000 (Wed, 17 Jun 2015) 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 2015-06-16 11:36:27 UTC (rev 61836) +++ firebird/trunk/ChangeLog 2015-06-17 00:10:15 UTC (rev 61837) @@ -1,3 +1,7 @@ + 2015-06-16 11:27 paulbeach + M builds/posix/darwin.defaults +Fix for gcc 4.1 problem is no longer needed. gcc 4.2 from MacOSX 10.8 + 2015-06-15 15:22 mapopa M builds/posix/postfix.darwin gds_relay was removed by Alex Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-16 11:36:27 UTC (rev 61836) +++ firebird/trunk/src/jrd/build_no.h 2015-06-17 00:10:15 UTC (rev 61837) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31885 + FORMAL BUILD NUMBER:31886 */ -#define PRODUCT_VER_STRING "3.0.0.31885" -#define FILE_VER_STRING "WI-T3.0.0.31885" -#define LICENSE_VER_STRING "WI-T3.0.0.31885" -#define FILE_VER_NUMBER 3, 0, 0, 31885 +#define PRODUCT_VER_STRING "3.0.0.31886" +#define FILE_VER_STRING "WI-T3.0.0.31886" +#define LICENSE_VER_STRING "WI-T3.0.0.31886" +#define FILE_VER_NUMBER 3, 0, 0, 31886 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31885" +#define FB_BUILD_NO "31886" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-16 11:36:27 UTC (rev 61836) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-17 00:10:15 UTC (rev 61837) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31885 +BuildNum=31886 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...> - 2015-06-19 00:09:16
|
Revision: 61847 http://sourceforge.net/p/firebird/code/61847 Author: firebirds Date: 2015-06-19 00:09:14 +0000 (Fri, 19 Jun 2015) 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 2015-06-18 22:30:53 UTC (rev 61846) +++ firebird/trunk/ChangeLog 2015-06-19 00:09:14 UTC (rev 61847) @@ -1,3 +1,11 @@ + 2015-06-18 22:30 robocop + M src/isql/isql.epp +CORE-4817. + + 2015-06-18 17:31 alexpeshkoff + M src/yvalve/why.cpp +Fixed races in events delivery caused by my recent related commit + 2015-06-16 11:27 paulbeach M builds/posix/darwin.defaults Fix for gcc 4.1 problem is no longer needed. gcc 4.2 from MacOSX 10.8 Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-18 22:30:53 UTC (rev 61846) +++ firebird/trunk/src/jrd/build_no.h 2015-06-19 00:09:14 UTC (rev 61847) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31886 + FORMAL BUILD NUMBER:31888 */ -#define PRODUCT_VER_STRING "3.0.0.31886" -#define FILE_VER_STRING "WI-T3.0.0.31886" -#define LICENSE_VER_STRING "WI-T3.0.0.31886" -#define FILE_VER_NUMBER 3, 0, 0, 31886 +#define PRODUCT_VER_STRING "3.0.0.31888" +#define FILE_VER_STRING "WI-T3.0.0.31888" +#define LICENSE_VER_STRING "WI-T3.0.0.31888" +#define FILE_VER_NUMBER 3, 0, 0, 31888 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31886" +#define FB_BUILD_NO "31888" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-18 22:30:53 UTC (rev 61846) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-19 00:09:14 UTC (rev 61847) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31886 +BuildNum=31888 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hv...@us...> - 2015-06-19 12:07:44
|
Revision: 61851 http://sourceforge.net/p/firebird/code/61851 Author: hvlad Date: 2015-06-19 12:07:41 +0000 (Fri, 19 Jun 2015) Log Message: ----------- Feature CORE-4707 : Implement ability to validate tables and indices online Modified Paths: -------------- firebird/trunk/src/common/IntlParametersBlock.cpp firebird/trunk/src/common/classes/ClumpletReader.cpp firebird/trunk/src/common/classes/SyncObject.cpp firebird/trunk/src/include/consts_pub.h firebird/trunk/src/jrd/Attachment.cpp firebird/trunk/src/jrd/Relation.cpp firebird/trunk/src/jrd/Relation.h firebird/trunk/src/jrd/lck.cpp firebird/trunk/src/jrd/lck.h firebird/trunk/src/jrd/lck_proto.h firebird/trunk/src/jrd/rlck.cpp firebird/trunk/src/jrd/svc.cpp firebird/trunk/src/jrd/svc_tab.cpp firebird/trunk/src/jrd/val_proto.h firebird/trunk/src/jrd/validation.cpp firebird/trunk/src/jrd/validation.h firebird/trunk/src/jrd/vio.cpp firebird/trunk/src/utilities/fbsvcmgr/fbsvcmgr.cpp Added Paths: ----------- firebird/trunk/doc/README.online_validation Added: firebird/trunk/doc/README.online_validation =================================================================== --- firebird/trunk/doc/README.online_validation (rev 0) +++ firebird/trunk/doc/README.online_validation 2015-06-19 12:07:41 UTC (rev 61851) @@ -0,0 +1,90 @@ + + Database validation allows to run low-level checks of consistency of on-disk +structures and even to fix some minor corruptions. It is recommended procedure +for any valuable database, i.e. DBA should validate database from time to time +to make sure it is healthy. But validation process requires exclusive access to +database, i.e. it forbids any kind of concurrent access to database while +validation runs. It could be a big problem to stop user access, especially when +database is large and validation takes notable amount of time. + + Online validation is a new feature which allows to perform some consistency +checks without exclusive access to database. Online validation allows to: +- validate some (or all) user tables in database +- validate some (or all) indices +- system tables are not validated +- other ODS checks (such as Header\PIP\TIP\Generators pages) are not run by + online validation +- while table (and\or its index) is validated user attachments are allowed to + read this table. Attempt to INSERT\UPDATE\DELETE will wait until validation + finished or will return lock timeout error (depends on lock timeout of user + transaction) +- while table (and\or its index) is validated any kind of garbage collection at + this table is disabled - background and cooperative garbage collection will + just skip this table, sweep will be terminated with error. + + When online validation starts to check table it makes few actions to prevent +concurrent modifications of table's data: +- acquires relation lock in PR (protected read) mode +- acquires (new) garbage collection lock in PW (protected write) mode. +Both locks are acquired using user-specified lock timeout. If any lock request +fails error is reported and table is skipped. +Then table and its indices are validated in the same way as full validation does. +Then locks are released and next table is validated. + + Online validation is implemented as Firebird service and accessible via Services +API. Therefore gfix utility can't run online validation. fbsvcmgr utility has +full support for new service, syntax is: + +fbsvcmgr [host:]service_mgr [user <...>] [password <...>] + action_validate dbname <filename> + [val_tab_incl <pattern>] + [val_tab_excl <pattern>] + [val_idx_incl <pattern>] + [val_idx_excl <pattern>] + [val_lock_timeout <number>] + +where + val_tab_incl pattern for tables names to include in validation run + val_tab_excl pattern for tables names to exclude from validation run + val_idx_incl pattern for indices names to include in validation run, + by default %, i.e. all indices + val_idx_excl pattern for indices names to exclude from validation run + val_lock_timeout lock timeout, used to acquire locks for table to validate, + in seconds, default is 10 sec + 0 is no-wait + -1 is infinite wait + + Patterns are regular expressions, they are processed by the same rules as +"SIMILAR TO" expressions. All patterns are case-sensitive (despite of database +dialect!). +If pattern for tables is omitted then all user tables will be validated. +If pattern for indices is omitted then all indices of tables to validate will +be validated. +System tables are not validated. + +Examples: + +1. fbsvcmgr.exe service_mgr user SYSDBA password masterkey + action_validate dbname c:\db.fdb + val_tab_incl A% + val_idx_excl % + val_lock_timeout 0 + +this command will validate all tables in database "c:\db.fdb" with names +starting with "A". Indices are not validated. Lock wait is not performed. + +2. fbsvcmgr.exe service_mgr user SYSDBA password masterkey + action_validate dbname c:\db.fdb + val_tab_incl "TAB1|TAB2" + +this command will validate tables TAB1 and TAB2 and all their indices. +Lock wait timeout is 10 sec. + +Note, to specify list of tables\indices it is necessary to: +a) separate names by character "|" +b) don't use spaces : TAB1 | TAB2 is wrong +c) whole list should be enclosed in double quotes to not confuse command + interpreter + + +Vlad Khorsun, <hvlad at users sourceforge net> Property changes on: firebird/trunk/doc/README.online_validation ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: firebird/trunk/src/common/IntlParametersBlock.cpp =================================================================== --- firebird/trunk/src/common/IntlParametersBlock.cpp 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/common/IntlParametersBlock.cpp 2015-06-19 12:07:41 UTC (rev 61851) @@ -251,6 +251,7 @@ case isc_action_svc_nrest: case isc_action_svc_trace_start: case isc_action_svc_db_stats: + case isc_action_svc_validate: mode = tag; break; } @@ -316,6 +317,18 @@ return TAG_COMMAND_LINE; } break; + + case isc_action_svc_validate: + switch (tag) + { + FB_IPB_TAG(isc_spb_dbname); + FB_IPB_TAG(isc_spb_val_tab_incl); + FB_IPB_TAG(isc_spb_val_tab_excl); + FB_IPB_TAG(isc_spb_val_idx_incl); + FB_IPB_TAG(isc_spb_val_idx_excl); + return TAG_STRING; + } + break; } return TAG_SKIP; Modified: firebird/trunk/src/common/classes/ClumpletReader.cpp =================================================================== --- firebird/trunk/src/common/classes/ClumpletReader.cpp 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/common/classes/ClumpletReader.cpp 2015-06-19 12:07:41 UTC (rev 61851) @@ -454,6 +454,19 @@ return IntSpb; } break; + case isc_action_svc_validate: + switch(tag) + { + case isc_spb_val_tab_incl: + case isc_spb_val_tab_excl: + case isc_spb_val_idx_incl: + case isc_spb_val_idx_excl: + case isc_spb_dbname: + return StringSpb; + case isc_spb_val_lock_timeout: + return IntSpb; + } + break; } invalid_structure("wrong spb state"); break; Modified: firebird/trunk/src/common/classes/SyncObject.cpp =================================================================== --- firebird/trunk/src/common/classes/SyncObject.cpp 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/common/classes/SyncObject.cpp 2015-06-19 12:07:41 UTC (rev 61851) @@ -48,10 +48,10 @@ if (type == SYNC_SHARED) { // In Vulcan SyncObject locking is not fair. Shared locks have priority - // before Exclusive locks. If we'll need to restore this behavior we - // should replace loop condition below by: - // while (true) - while (waiters == 0) + // before Exclusive locks. To change this behavior we should replace + // loop condition below by: + //while (waiters == 0) // activate to make locking fair + while (true) { const AtomicCounter::counter_type oldState = lockState; if (oldState < 0) @@ -75,8 +75,8 @@ mutex.enter(FB_FUNCTION); ++waiters; - //while (true) - while (!waitingThreads) + //while (!waitingThreads) // activate to make locking fair + while (true) { const AtomicCounter::counter_type oldState = lockState; if (oldState < 0) Modified: firebird/trunk/src/include/consts_pub.h =================================================================== --- firebird/trunk/src/include/consts_pub.h 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/include/consts_pub.h 2015-06-19 12:07:41 UTC (rev 61851) @@ -320,7 +320,8 @@ #define isc_action_svc_set_mapping 27 // Set auto admins mapping in security database #define isc_action_svc_drop_mapping 28 // Drop auto admins mapping in security database #define isc_action_svc_display_user_adm 29 // Displays user(s) from security database with admin info -#define isc_action_svc_last 30 // keep it last ! +#define isc_action_svc_validate 30 // Starts database online validation +#define isc_action_svc_last 31 // keep it last ! /***************************** * Service information items * @@ -496,6 +497,16 @@ #define isc_spb_res_create 0x2000 #define isc_spb_res_use_all_space 0x4000 +/***************************************** + * Parameters for isc_action_svc_validate * + *****************************************/ + +#define isc_spb_val_tab_incl 1 // include filter based on regular expression +#define isc_spb_val_tab_excl 2 // exclude filter based on regular expression +#define isc_spb_val_idx_incl 3 // regexp of indices to validate +#define isc_spb_val_idx_excl 4 // regexp of indices to NOT validate +#define isc_spb_val_lock_timeout 5 // how long to wait for table lock + /****************************************** * Parameters for isc_spb_res_access_mode * ******************************************/ Modified: firebird/trunk/src/jrd/Attachment.cpp =================================================================== --- firebird/trunk/src/jrd/Attachment.cpp 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/jrd/Attachment.cpp 2015-06-19 12:07:41 UTC (rev 61851) @@ -484,6 +484,12 @@ relation->rel_flags &= ~REL_scanned; } + if (relation->rel_gc_lock) + { + LCK_release(tdbb, relation->rel_gc_lock); + relation->rel_flags |= REL_gc_lockneed; + } + for (IndexLock* index = relation->rel_index_locks; index; index = index->idl_next) { if (index->idl_lock) Modified: firebird/trunk/src/jrd/Relation.cpp =================================================================== --- firebird/trunk/src/jrd/Relation.cpp 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/jrd/Relation.cpp 2015-06-19 12:07:41 UTC (rev 61851) @@ -27,6 +27,7 @@ #include "../jrd/btr_proto.h" #include "../jrd/dpm_proto.h" #include "../jrd/idx_proto.h" +#include "../jrd/lck_proto.h" #include "../jrd/met_proto.h" #include "../jrd/pag_proto.h" #include "../jrd/vio_debug.h" @@ -300,6 +301,222 @@ return false; } +Lock* jrd_rel::createLock(thread_db* tdbb, MemoryPool* pool, jrd_rel* relation, lck_t lckType, bool noAst) +{ + if (!pool) + pool = relation->rel_pool; + + const USHORT relLockLen = relation->getRelLockKeyLength(); + + Lock* lock = FB_NEW_RPT(*pool, relLockLen) Lock(tdbb, relLockLen, lckType, relation); + relation->getRelLockKey(tdbb, &lock->lck_key.lck_string[0]); + + lock->lck_type = lckType; + switch (lckType) + { + case LCK_relation: + break; + + case LCK_rel_gc: + lock->lck_ast = noAst ? NULL : blocking_ast_gcLock; + break; + + default: + fb_assert(false); + } + + return lock; +} + +bool jrd_rel::acquireGCLock(thread_db* tdbb, int wait) +{ + fb_assert(rel_flags & REL_gc_lockneed); + if (!(rel_flags & REL_gc_lockneed)) + { + fb_assert(rel_gc_lock->lck_id); + fb_assert(rel_gc_lock->lck_physical == (rel_flags & REL_gc_disabled ? LCK_SR : LCK_SW)); + return true; + } + + if (!rel_gc_lock) + rel_gc_lock = createLock(tdbb, NULL, this, LCK_rel_gc, false); + + fb_assert(!rel_gc_lock->lck_id); + fb_assert(!(rel_flags & REL_gc_blocking)); + + ThreadStatusGuard temp_status(tdbb); + + const USHORT level = (rel_flags & REL_gc_disabled) ? LCK_SR : LCK_SW; + bool ret = LCK_lock(tdbb, rel_gc_lock, level, wait); + if (!ret && (level == LCK_SW)) + { + rel_flags |= REL_gc_disabled; + ret = LCK_lock(tdbb, rel_gc_lock, LCK_SR, wait); + if (!ret) + rel_flags &= ~REL_gc_disabled; + } + + if (ret) + rel_flags &= ~REL_gc_lockneed; + + return ret; +} + +void jrd_rel::downgradeGCLock(thread_db* tdbb) +{ + if (!rel_sweep_count && (rel_flags & REL_gc_blocking)) + { + fb_assert(!(rel_flags & REL_gc_lockneed)); + fb_assert(rel_gc_lock->lck_id); + fb_assert(rel_gc_lock->lck_physical == LCK_SW); + + rel_flags &= ~REL_gc_blocking; + rel_flags |= REL_gc_disabled; + + LCK_downgrade(tdbb, rel_gc_lock); + + if (rel_gc_lock->lck_physical != LCK_SR) + { + rel_flags &= ~REL_gc_disabled; + if (rel_gc_lock->lck_physical < LCK_SR) + rel_flags |= REL_gc_lockneed; + } + } +} + +int jrd_rel::blocking_ast_gcLock(void* ast_object) +{ +/**** + SR - gc forbidden, awaiting moment to re-establish SW lock + SW - gc allowed, usual state + PW - gc allowed to the one connection only +****/ + jrd_rel* relation = static_cast<jrd_rel*>(ast_object); + + try + { + Lock* lock = relation->rel_gc_lock; + Database* dbb = lock->lck_dbb; + + AsyncContextHolder tdbb(dbb, FB_FUNCTION); + + fb_assert(!(relation->rel_flags & REL_gc_lockneed)); + if (relation->rel_flags & REL_gc_lockneed) // work already done syncronously ? + return 0; + + relation->rel_flags |= REL_gc_blocking; + if (relation->rel_sweep_count) + return 0; + + if (relation->rel_flags & REL_gc_disabled) + { + // someone acquired EX lock + + fb_assert(lock->lck_id); + fb_assert(lock->lck_physical == LCK_SR); + + LCK_release(tdbb, lock); + relation->rel_flags &= ~(REL_gc_disabled | REL_gc_blocking); + relation->rel_flags |= REL_gc_lockneed; + } + else + { + // someone acquired PW lock + + fb_assert(lock->lck_id); + fb_assert(lock->lck_physical == LCK_SW); + + relation->rel_flags |= REL_gc_disabled; + relation->downgradeGCLock(tdbb); + } + } + catch (const Firebird::Exception&) + {} // no-op + + return 0; +} + + +/// jrd_rel::GCExclusive + +jrd_rel::GCExclusive::GCExclusive(thread_db* tdbb, jrd_rel* relation) : + m_tdbb(tdbb), + m_relation(relation), + m_lock(NULL) +{ +} + +jrd_rel::GCExclusive::~GCExclusive() +{ + release(); + delete m_lock; +} + +bool jrd_rel::GCExclusive::acquire(int wait) +{ + // if validation is already running - go out + if (m_relation->rel_flags & REL_gc_disabled) + return false; + + ThreadStatusGuard temp_status(m_tdbb); + + m_relation->rel_flags |= REL_gc_disabled; + + int sleeps = -wait * 10; + while (m_relation->rel_sweep_count) + { + Attachment::Checkout cout(m_tdbb->getAttachment(), FB_FUNCTION); + Thread::sleep(100); + + if (wait < 0 && --sleeps == 0) + break; + } + + if (m_relation->rel_sweep_count) + { + m_relation->rel_flags &= ~REL_gc_disabled; + return false; + } + + if (!(m_relation->rel_flags & REL_gc_lockneed)) + { + m_relation->rel_flags |= REL_gc_lockneed; + LCK_release(m_tdbb, m_relation->rel_gc_lock); + } + + // we need no AST here + if (!m_lock) + m_lock = jrd_rel::createLock(m_tdbb, NULL, m_relation, LCK_rel_gc, true); + + const bool ret = LCK_lock(m_tdbb, m_lock, LCK_PW, wait); + if (!ret) + m_relation->rel_flags &= ~REL_gc_disabled; + + return ret; +} + +void jrd_rel::GCExclusive::release() +{ + if (!m_lock || !m_lock->lck_id) + return; + + fb_assert(m_relation->rel_flags & REL_gc_disabled); + + if (!(m_relation->rel_flags & REL_gc_lockneed)) + { + m_relation->rel_flags |= REL_gc_lockneed; + LCK_release(m_tdbb, m_relation->rel_gc_lock); + } + + LCK_convert(m_tdbb, m_lock, LCK_EX, LCK_WAIT); + m_relation->rel_flags &= ~REL_gc_disabled; + + LCK_release(m_tdbb, m_lock); +} + + +/// RelationPages + void RelationPages::free(RelationPages*& nextFree) { rel_next_free = nextFree; Modified: firebird/trunk/src/jrd/Relation.h =================================================================== --- firebird/trunk/src/jrd/Relation.h 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/jrd/Relation.h 2015-06-19 12:07:41 UTC (rev 61851) @@ -23,6 +23,7 @@ #define JRD_RELATION_H #include "../jrd/jrd.h" +#include "../jrd/lck.h" #include "../jrd/pag.h" #include "../jrd/val.h" #include "../jrd/Attachment.h" @@ -166,6 +167,7 @@ Lock* rel_existence_lock; // existence lock, if any Lock* rel_partners_lock; // partners lock Lock* rel_rescan_lock; // lock forcing relation to be scanned + Lock* rel_gc_lock; // garbage collection lock IndexLock* rel_index_locks; // index existence locks IndexBlock* rel_index_blocks; // index blocks for caching index info trig_vec* rel_pre_erase; // Pre-operation erase trigger @@ -240,12 +242,50 @@ RelationPages* getPagesInternal(thread_db* tdbb, TraNumber tran, bool allocPages); public: - explicit jrd_rel(MemoryPool& p) - : rel_pool(&p), rel_name(p), rel_owner_name(p), - rel_view_contexts(p), rel_security_name(p), rel_gc_records(p) - {} + explicit jrd_rel(MemoryPool& p); bool hasTriggers() const; + + static Lock* createLock(thread_db* tdbb, MemoryPool* pool, jrd_rel* relation, lck_t, bool); + static int blocking_ast_gcLock(void*); + void downgradeGCLock(thread_db* tdbb); + bool acquireGCLock(thread_db* tdbb, int wait); + + // This guard is used by regular code to prevent online validation while + // dead- or back- versions is removed from disk. + class GCShared + { + public: + GCShared(thread_db* tdbb, jrd_rel* relation); + ~GCShared(); + + bool gcEnabled() const + { + return m_gcEnabled; + } + + private: + thread_db* m_tdbb; + jrd_rel* m_relation; + bool m_gcEnabled; + }; + + // This guard is used by online validation to prevent any modifications of + // table data while it is checked. + class GCExclusive + { + public: + GCExclusive(thread_db* tdbb, jrd_rel* relation); + ~GCExclusive(); + + bool acquire(int wait); + void release(); + + private: + thread_db* m_tdbb; + jrd_rel* m_relation; + Lock* m_lock; + }; }; // rel_flags @@ -267,8 +307,19 @@ const ULONG REL_temp_conn = 0x4000; // relation is a GTT preserve rows const ULONG REL_virtual = 0x8000; // relation is virtual const ULONG REL_jrd_view = 0x10000; // relation is VIEW +const ULONG REL_gc_blocking = 0x20000; // request to downgrade\release gc lock +const ULONG REL_gc_disabled = 0x40000; // gc is disabled temporarily +const ULONG REL_gc_lockneed = 0x80000; // gc lock should be acquired +/// class jrd_rel + +inline jrd_rel::jrd_rel(MemoryPool& p) + : rel_pool(&p), rel_flags(REL_gc_lockneed), rel_name(p), rel_owner_name(p), + rel_view_contexts(p), rel_security_name(p), rel_gc_records(p) +{ +} + inline bool jrd_rel::isSystem() const { return rel_flags & REL_system; @@ -297,6 +348,39 @@ return getPagesInternal(tdbb, tran, allocPages); } +/// class jrd_rel::GCShared + +inline jrd_rel::GCShared::GCShared(thread_db* tdbb, jrd_rel* relation) : + m_tdbb(tdbb), + m_relation(relation), + m_gcEnabled(false) +{ + if (m_relation->rel_flags & (REL_gc_blocking | REL_gc_disabled)) + return; + + if (m_relation->rel_flags & REL_gc_lockneed) + m_relation->acquireGCLock(tdbb, LCK_NO_WAIT); + + if (!(m_relation->rel_flags & (REL_gc_blocking | REL_gc_disabled | REL_gc_lockneed))) + { + ++m_relation->rel_sweep_count; + m_gcEnabled = true; + } + + if ((m_relation->rel_flags & REL_gc_blocking) && !m_relation->rel_sweep_count) + m_relation->downgradeGCLock(m_tdbb); +} + +inline jrd_rel::GCShared::~GCShared() +{ + if (m_gcEnabled) + --m_relation->rel_sweep_count; + + if ((m_relation->rel_flags & REL_gc_blocking) && !m_relation->rel_sweep_count) + m_relation->downgradeGCLock(m_tdbb); +} + + // Field block, one for each field in a scanned relation class jrd_fld : public pool_alloc<type_fld> Modified: firebird/trunk/src/jrd/lck.cpp =================================================================== --- firebird/trunk/src/jrd/lck.cpp 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/jrd/lck.cpp 2015-06-19 12:07:41 UTC (rev 61851) @@ -241,23 +241,31 @@ m_save_lock(NULL) { Jrd::Attachment* att = m_tdbb->getAttachment(); - m_save_lock = att ? att->att_wait_lock : NULL; + if (att) + m_save_lock = att->att_wait_lock; m_cancel_disabled = (m_tdbb->tdbb_flags & TDBB_wait_cancel_disable); - m_tdbb->tdbb_flags |= TDBB_wait_cancel_disable; + if (wait == LCK_WAIT) + { + switch (lock->lck_type) + { + case LCK_tra: + m_tdbb->tdbb_flags &= ~TDBB_wait_cancel_disable; + if (att) + att->att_wait_lock = lock; + break; - if (!wait) - return; - - if (lock->lck_type == LCK_tra) + default: + m_tdbb->tdbb_flags |= TDBB_wait_cancel_disable; + } + } + else { fb_assert(att); m_tdbb->tdbb_flags &= ~TDBB_wait_cancel_disable; if (att) - { att->att_wait_lock = lock; - } } } @@ -265,9 +273,7 @@ { Jrd::Attachment* att = m_tdbb->getAttachment(); if (att) - { att->att_wait_lock = m_save_lock; - } if (m_cancel_disabled) m_tdbb->tdbb_flags |= TDBB_wait_cancel_disable; @@ -541,6 +547,7 @@ case LCK_cancel: case LCK_monitor: case LCK_btr_dont_gc: + case LCK_rel_gc: handle = *LCK_OWNER_HANDLE_ATT(tdbb); break; Modified: firebird/trunk/src/jrd/lck.h =================================================================== --- firebird/trunk/src/jrd/lck.h 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/jrd/lck.h 2015-06-19 12:07:41 UTC (rev 61851) @@ -65,6 +65,7 @@ LCK_btr_dont_gc, // Prevent removal of b-tree page from index LCK_shared_counter, // Database-wide shared counter LCK_tra_pc, // Precommitted transaction lock + LCK_rel_gc, // Allow garbage collection for relation LCK_fun_exist, // Function existence lock LCK_rel_rescan, // Relation forced rescan lock LCK_crypt, // Crypt lock for single crypt thread Modified: firebird/trunk/src/jrd/lck_proto.h =================================================================== --- firebird/trunk/src/jrd/lck_proto.h 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/jrd/lck_proto.h 2015-06-19 12:07:41 UTC (rev 61851) @@ -46,4 +46,53 @@ void LCK_re_post(Jrd::thread_db*, Jrd::Lock*); void LCK_write_data(Jrd::thread_db*, Jrd::Lock*, SLONG); + +class AutoLock +{ +public: + explicit AutoLock(Jrd::thread_db* tdbb, Jrd::Lock* lck = NULL) : + m_tdbb(tdbb), + m_lock(lck) + { + } + + ~AutoLock() + { + release(); + } + + void release() + { + if (m_lock) + { + if (m_lock->lck_id) + LCK_release(m_tdbb, m_lock); + delete m_lock; + m_lock = NULL; + } + } + + Jrd::Lock* operator-> () + { + return m_lock; + } + + operator Jrd::Lock* () + { + return m_lock; + } + + Jrd::Lock* operator= (Jrd::Lock* lck) + { + release(); + m_lock = lck; + return m_lock; + } + +private: + Jrd::thread_db* m_tdbb; + Jrd::Lock* m_lock; +}; + + #endif // JRD_LCK_PROTO_H Modified: firebird/trunk/src/jrd/rlck.cpp =================================================================== --- firebird/trunk/src/jrd/rlck.cpp 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/jrd/rlck.cpp 2015-06-19 12:07:41 UTC (rev 61851) @@ -100,8 +100,15 @@ result = LCK_convert(tdbb, lock, level, transaction->getLockWait()); else result = LCK_lock(tdbb, lock, level, transaction->getLockWait()); + if (!result) + { + string err; + err.printf("Acquire lock for relation (%s) failed", relation->rel_name.c_str()); + + ERR_append_status(tdbb->tdbb_status_vector, Arg::Gds(isc_random) << Arg::Str(err)); ERR_punt(); + } return lock; } @@ -133,10 +140,8 @@ vector = transaction->tra_relation_locks = vec<Lock*>::newVector(*transaction->tra_pool, transaction->tra_relation_locks, relId + 1); + lock = jrd_rel::createLock(tdbb, transaction->tra_pool, relation, LCK_relation, true); - const USHORT relLockLen = relation->getRelLockKeyLength(); - lock = FB_NEW_RPT(*transaction->tra_pool, relLockLen) Lock(tdbb, relLockLen, LCK_relation); - relation->getRelLockKey(tdbb, &lock->lck_key.lck_string[0]); // enter all relation locks into the intra-process lock manager and treat // them as compatible within the attachment according to IPLM rules lock->lck_compatible = tdbb->getAttachment(); Modified: firebird/trunk/src/jrd/svc.cpp =================================================================== --- firebird/trunk/src/jrd/svc.cpp 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/jrd/svc.cpp 2015-06-19 12:07:41 UTC (rev 61851) @@ -76,6 +76,7 @@ #include "../utilities/gstat/dbaswi.h" #include "../utilities/nbackup/nbkswi.h" #include "../jrd/trace/traceswi.h" +#include "../jrd/val_proto.h" #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> @@ -1970,7 +1971,8 @@ svc_id == isc_action_svc_display_user || svc_id == isc_action_svc_display_user_adm || svc_id == isc_action_svc_set_mapping || - svc_id == isc_action_svc_drop_mapping; + svc_id == isc_action_svc_drop_mapping || + svc_id == isc_action_svc_validate; if (flNeedUser) { @@ -2496,6 +2498,8 @@ string nbk_database, nbk_file; int nbk_level = -1; + bool val_database = false; + bool found = false; do @@ -2868,6 +2872,31 @@ } break; + case isc_action_svc_validate: + if (!get_action_svc_parameter(spb.getClumpTag(), val_option_in_sw_table, switches)) { + return false; + } + + switch (spb.getClumpTag()) + { + case isc_spb_dbname: + if (val_database) { + (Arg::Gds(isc_unexp_spb_form) << Arg::Str("only one isc_spb_dbname")).raise(); + } + val_database = true; + // fall thru + case isc_spb_val_tab_incl: + case isc_spb_val_tab_excl: + case isc_spb_val_idx_incl: + case isc_spb_val_idx_excl: + get_action_svc_string(spb, switches); + break; + case isc_spb_val_lock_timeout: + get_action_svc_data(spb, switches); + break; + } + break; + default: return false; } @@ -2918,6 +2947,13 @@ switches += nbk_database; switches += nbk_file; break; + + case isc_action_svc_validate: + if (!val_database) + { + (Arg::Gds(isc_missing_required_spb) << Arg::Str("isc_spb_dbname")).raise(); + } + break; } switches.rtrim(); @@ -2962,7 +2998,7 @@ void Service::get_action_svc_data(const ClumpletReader& spb, string& switches) { string s; - s.printf("%"ULONGFORMAT" ", spb.getInt()); + s.printf("%"SLONGFORMAT" ", spb.getInt()); switches += s; } Modified: firebird/trunk/src/jrd/svc_tab.cpp =================================================================== --- firebird/trunk/src/jrd/svc_tab.cpp 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/jrd/svc_tab.cpp 2015-06-19 12:07:41 UTC (rev 61851) @@ -31,6 +31,7 @@ #include "gen/iberror.h" #include "../jrd/svc.h" #include "../jrd/trace/TraceService.h" +#include "../jrd/val_proto.h" // Service Functions #include "../burp/burp_proto.h" @@ -119,6 +120,7 @@ { isc_action_svc_drop_mapping, "Drop Domain Admins Mapping to RDB$ADMIN", NULL, GSEC_main }, { isc_action_svc_display_user_adm, "Display User with Admin Info", NULL, GSEC_main }, #endif + { isc_action_svc_validate, "Validate Database", NULL, VAL_service}, // actions with no names are undocumented { isc_action_svc_set_config, NULL, NULL, TEST_THREAD }, { isc_action_svc_default_config, NULL, NULL, TEST_THREAD }, Modified: firebird/trunk/src/jrd/val_proto.h =================================================================== --- firebird/trunk/src/jrd/val_proto.h 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/jrd/val_proto.h 2015-06-19 12:07:41 UTC (rev 61851) @@ -25,6 +25,27 @@ #define JRD_VAL_PROTO_H bool VAL_validate(Jrd::thread_db*, USHORT); +int VAL_service(Firebird::UtilSvc*); +const int IN_SW_VAL_TAB_INCL = 1; +const int IN_SW_VAL_TAB_EXCL = 2; +const int IN_SW_VAL_IDX_INCL = 3; +const int IN_SW_VAL_IDX_EXCL = 4; +const int IN_SW_VAL_LOCK_TIMEOUT = 5; +const int IN_SW_VAL_DATABASE = 6; + +static const Switches::in_sw_tab_t val_option_in_sw_table[] = +{ + {IN_SW_VAL_TAB_INCL, isc_spb_val_tab_incl, "TAB_INCLUDE", 0, 0, 0, false, 0, 5, NULL}, + {IN_SW_VAL_TAB_EXCL, isc_spb_val_tab_excl, "TAB_EXCLUDE", 0, 0, 0, false, 0, 5, NULL}, + {IN_SW_VAL_IDX_INCL, isc_spb_val_idx_incl, "IDX_INCLUDE", 0, 0, 0, false, 0, 5, NULL}, + {IN_SW_VAL_IDX_EXCL, isc_spb_val_idx_excl, "IDX_EXCLUDE", 0, 0, 0, false, 0, 5, NULL}, + {IN_SW_VAL_LOCK_TIMEOUT, isc_spb_val_lock_timeout, "WAIT", 0, 0, 0, false, 0, 1, NULL}, + + {IN_SW_VAL_DATABASE, isc_spb_dbname, "DATABASE", 0, 0, 0, false, 0, 1, NULL}, + + {0, 0, NULL, 0, 0, 0, false, 0, 0, NULL} // End of List +}; + #endif // JRD_VAL_PROTO_H Modified: firebird/trunk/src/jrd/validation.cpp =================================================================== --- firebird/trunk/src/jrd/validation.cpp 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/jrd/validation.cpp 2015-06-19 12:07:41 UTC (rev 61851) @@ -552,6 +552,7 @@ #include "../jrd/cch.h" #include "../jrd/rse.h" #include "../jrd/tra.h" +#include "../jrd/svc.h" #include "../jrd/btr_proto.h" #include "../jrd/cch_proto.h" #include "../jrd/dpm_proto.h" @@ -564,6 +565,11 @@ #include "../jrd/val_proto.h" #include "../jrd/validation.h" +#include "../common/classes/ClumpletWriter.h" +#include "../jrd/intl_proto.h" +#include "../jrd/lck_proto.h" +#include "../jrd/Collation.h" + #ifdef DEBUG_VAL_VERBOSE #include "../jrd/dmp_proto.h" /* Control variable for verbose output during debug of @@ -576,6 +582,7 @@ using namespace Jrd; using namespace Ods; +using namespace Firebird; #ifdef DEBUG_VAL_VERBOSE @@ -583,6 +590,30 @@ #endif +static PatternMatcher* createPatternMatcher(thread_db* tdbb, const char* pattern) +{ + PatternMatcher* matcher = NULL; + try + { + if (pattern) + { + const int len = strlen(pattern); + + Collation* obj = INTL_texttype_lookup(tdbb, CS_UTF8); + matcher = obj->createSimilarToMatcher(*tdbb->getDefaultPool(), + (const UCHAR*)pattern, len, (UCHAR*)"\\", 1); + } + } + catch (const Exception& ex) + { + Arg::StatusVector status(ex); + status << Arg::Gds(isc_random) << Arg::Str(pattern); + status.raise(); + } + return matcher; +} + + static void explain_pp_bits(const UCHAR bits, Firebird::string& names) { if (bits & ppg_dp_full) @@ -635,12 +666,134 @@ Attachment* att = tdbb->getAttachment(); if (!att->att_validation) - att->att_validation = FB_NEW (*att->att_pool) Validation(); + att->att_validation = FB_NEW (*att->att_pool) Validation(tdbb); - return att->att_validation->run(tdbb, switches); + USHORT flags = 0; + if (switches & isc_dpb_records) + flags |= Validation::VDR_records; + + if (switches & isc_dpb_repair) + flags |= Validation::VDR_repair; + + if (!(switches & isc_dpb_no_update)) + flags |= Validation::VDR_update; + + return att->att_validation->run(tdbb, flags); } +static int validate(Firebird::UtilSvc* svc) +{ + PathName dbName; + string userName; + + const Switches valSwitches(val_option_in_sw_table, FB_NELEM(val_option_in_sw_table), false, true); + const char** argv = svc->argv.begin(); + const char* const* end = svc->argv.end(); + for (++argv; argv < end; argv++) + { + if (!*argv) + continue; + + const Switches::in_sw_tab_t* sw = valSwitches.findSwitch(*argv); + if (!sw) + continue; + + switch (sw->in_sw) + { + case IN_SW_VAL_DATABASE: + *argv = NULL; + argv++; + if (argv < end && *argv) + dbName = *argv; + else + ;// error + break; + + default: + break; + } + } + + ClumpletWriter dpb(ClumpletReader::Tagged, MAX_DPB_SIZE, isc_dpb_version1); + if (!userName.isEmpty()) + { + dpb.insertString(isc_dpb_trusted_auth, userName); + } + + FbLocalStatus status; + RefPtr<JProvider> jProv(JProvider::getInstance()); + RefPtr<JAttachment> jAtt; + jAtt.assignRefNoIncr(jProv->attachDatabase(&status, dbName.c_str(), dpb.getBufferLength(), dpb.getBuffer())); + + if (status->getState() & IStatus::STATE_ERRORS) + { + svc->setServiceStatus(status->getErrors()); + return FB_FAILURE; + } + + Attachment* att = jAtt->getHandle(); + Database* dbb = att->att_database; + + svc->started(); + + MemoryPool* val_pool = NULL; + int ret_code = FB_SUCCESS; + try + { + // should be EngineContextHolder but it is declared in jrd.cpp + BackgroundContextHolder tdbb(dbb, att, &status, FB_FUNCTION); + att->att_use_count++; + + + tdbb->tdbb_flags |= TDBB_sweeper; + + val_pool = dbb->createPool(); + Jrd::ContextPoolHolder context(tdbb, val_pool); + + Validation control(tdbb, svc); + control.run(tdbb, Validation::VDR_records | Validation::VDR_online | Validation::VDR_partial); + + att->att_use_count--; + } + catch (const Exception& ex) + { + att->att_use_count--; + ex.stuffException(&status); + svc->setServiceStatus(status->getErrors()); + ret_code = FB_FAILURE; + } + + dbb->deletePool(val_pool); + jAtt->detach(&status); + return ret_code; +} + + +int VAL_service(Firebird::UtilSvc* svc) +{ + svc->initStatus(); + + int exit_code = FB_SUCCESS; + + try + { + exit_code = validate(svc); + } + catch (const Exception& ex) + { + FbLocalStatus status; + ex.stuffException(&status); + svc->setServiceStatus(status->getErrors()); + exit_code = FB_FAILURE; + } + + svc->started(); + + return (THREAD_ENTRY_RETURN)(IPTR)exit_code; +} + + namespace Jrd { @@ -683,9 +836,9 @@ {false, fb_info_ppage_warns, "Pointer page %"ULONGFORMAT" {sequence %"ULONGFORMAT"} bits {0x%02X %s} are not consistent with data page %"ULONGFORMAT" {sequence %"ULONGFORMAT"} state {0x%02X %s}"} }; -Validation::Validation() +Validation::Validation(thread_db* tdbb, UtilSvc* uSvc) { - vdr_tdbb = NULL; + vdr_tdbb = tdbb; vdr_max_page = 0; vdr_flags = 0; vdr_errors = 0; @@ -697,11 +850,143 @@ vdr_rel_records = NULL; vdr_idx_records = NULL; vdr_page_bitmap = NULL; + + vdr_service = uSvc; + vdr_tab_incl = vdr_tab_excl = NULL; + vdr_idx_incl = vdr_idx_excl = NULL; + vdr_lock_tout = -10; + + if (uSvc) { + parse_args(tdbb); + } + output("Validation started\n\n"); } +Validation::~Validation() +{ + delete vdr_tab_incl; + delete vdr_tab_excl; + delete vdr_idx_incl; + delete vdr_idx_excl; -bool Validation::run(thread_db* tdbb, USHORT switches) + output("Validation finished\n"); +} + +void Validation::parse_args(thread_db* tdbb) { + Switches local_sw_table(val_option_in_sw_table, FB_NELEM(val_option_in_sw_table), true, true); + + const char** argv = vdr_service->argv.begin(); + const char* const* end = vdr_service->argv.end(); + for (++argv; argv < end; argv++) + { + if (!*argv) + continue; + + string arg(*argv); + Switches::in_sw_tab_t* sw = local_sw_table.findSwitchMod(arg); + if (!sw) + continue; + + if (sw->in_sw_state) + { + string s; + s.printf("Switch %s specified more than once", sw->in_sw_name); + + (Arg::Gds(isc_random) << Arg::Str(s)).raise(); + } + + sw->in_sw_state = true; + + switch (sw->in_sw) + { + case IN_SW_VAL_TAB_INCL: + case IN_SW_VAL_TAB_EXCL: + case IN_SW_VAL_IDX_INCL: + case IN_SW_VAL_IDX_EXCL: + case IN_SW_VAL_LOCK_TIMEOUT: + *argv++ = NULL; + if (argv >= end || !(*argv)) + { + string s; + s.printf("Switch %s requires value", sw->in_sw_name); + + (Arg::Gds(isc_random) << Arg::Str(s)).raise(); + } + break; + + default: + break; + } + + switch (sw->in_sw) + { + case IN_SW_VAL_TAB_INCL: + vdr_tab_incl = createPatternMatcher(tdbb, *argv); + break; + + case IN_SW_VAL_TAB_EXCL: + vdr_tab_excl = createPatternMatcher(tdbb, *argv); + break; + + case IN_SW_VAL_IDX_INCL: + vdr_idx_incl = createPatternMatcher(tdbb, *argv); + break; + + case IN_SW_VAL_IDX_EXCL: + vdr_idx_excl = createPatternMatcher(tdbb, *argv); + break; + + case IN_SW_VAL_LOCK_TIMEOUT: + { + char* end = (char*) *argv; + vdr_lock_tout = -strtol(*argv, &end, 10); + + if (end && *end) + { + string s; + s.printf("Value (%s) is not a valid number", *argv); + + (Arg::Gds(isc_random) << Arg::Str(s)).raise(); + } + } + break; + + default: + break; + } + } +} + + +void Validation::output(const char* format, ...) +{ + if (!vdr_service) + return; + + va_list params; + va_start(params, format); + + string s; + tm now; + int ms; + TimeStamp::getCurrentTimeStamp().decode(&now, &ms); + +// s.printf("%04d-%02d-%02d %02d:%02d:%02d.%04d ", + s.printf("%02d:%02d:%02d.%02d ", +// now.tm_year + 1900, now.tm_mon + 1, now.tm_mday, + now.tm_hour, now.tm_min, now.tm_sec, ms / 100); + vdr_service->outputVerbose(s.c_str()); + + s.vprintf(format, params); + va_end(params); + + vdr_service->outputVerbose(s.c_str()); +} + + +bool Validation::run(thread_db* tdbb, USHORT flags) +{ /************************************** * * r u n @@ -722,16 +1007,8 @@ val_pool = dbb->createPool(); Jrd::ContextPoolHolder context(tdbb, val_pool); - vdr_flags = 0; - if (switches & isc_dpb_records) - vdr_flags |= VDR_records; + vdr_flags = flags; - if (switches & isc_dpb_repair) - vdr_flags |= VDR_repair; - - if (!(switches & isc_dpb_no_update)) - vdr_flags |= VDR_update; - // initialize validate errors vdr_errors = vdr_warns = vdr_fixed = 0; for (USHORT i = 0; i < VAL_MAX_ERROR; i++) @@ -745,7 +1022,9 @@ if (vdr_errors || vdr_warns) vdr_flags &= ~VDR_update; - garbage_collect(); + if (!(vdr_flags & VDR_online) && !(vdr_flags & VDR_partial)) { + garbage_collect(); + } CCH_flush(tdbb, FLUSH_FINI, 0); tdbb->tdbb_flags &= ~TDBB_sweeper; @@ -819,7 +1098,7 @@ const TEXT* err_string = err_code < VAL_MAX_ERROR ? vdr_msg_table[err_code].msg: "Unknown error code"; - Firebird::string s; + string s; va_list ptr; const char* fn = att->att_filename.c_str(); @@ -858,11 +1137,14 @@ else gds__log("Database: %s\n\t%s", fn, s.c_str()); + s.append("\n"); + output(s.c_str()); + return rtn_corrupt; } Validation::FETCH_CODE Validation::fetch_page(bool mark, ULONG page_number, - USHORT type, WIN* window, void* apage_pointer) + USHORT type, WIN* window, void* aPage_pointer) { /************************************** * @@ -878,12 +1160,22 @@ Database* dbb = vdr_tdbb->getDatabase(); if (--vdr_tdbb->tdbb_quantum < 0) + { JRD_reschedule(vdr_tdbb, 0, true); + if (vdr_service && vdr_service->finished()) + { + CCH_unwind(vdr_tdbb, false); + Arg::Gds(isc_att_shutdown).raise(); + } + } + window->win_page = page_number; window->win_flags = 0; - pag** page_pointer = reinterpret_cast<pag**>(apage_pointer); - *page_pointer = CCH_FETCH_NO_SHADOW(vdr_tdbb, window, LCK_write, 0); + pag** page_pointer = reinterpret_cast<pag**>(aPage_pointer); + *page_pointer = CCH_FETCH_NO_SHADOW(vdr_tdbb, window, + (vdr_flags & VDR_online ? LCK_read : LCK_write), + 0); if ((*page_pointer)->pag_type != type && type != pag_undefined) { @@ -1125,6 +1417,7 @@ // Level 1 blobs are a little more complicated WIN window1(DB_PAGE_SPACE, -1), window2(DB_PAGE_SPACE, -1); + window1.win_flags = window2.win_flags = WIN_garbage_collector; const ULONG* pages1 = header->blh_page; const ULONG* const end1 = pages1 + ((USHORT) (length - BLH_SIZE) >> SHIFTLONG); @@ -1192,6 +1485,7 @@ ULONG page_number = header->rhd_b_page; USHORT line_number = header->rhd_b_line; WIN window(DB_PAGE_SPACE, -1); + window.win_flags = WIN_garbage_collector; while (page_number) { @@ -1250,25 +1544,72 @@ fetch_page(true, HEADER_PAGE, pag_header, &window, &page); vdr_max_transaction = page->hdr_next_transaction; - walk_header(page->hdr_next_page); - walk_pip(); - walk_scns(); - walk_tip(page->hdr_next_transaction); - walk_generators(); + if (vdr_flags & VDR_online) { + CCH_RELEASE(vdr_tdbb, &window); + } + if (!(vdr_flags & VDR_partial)) + { + walk_header(page->hdr_next_page); + walk_pip(); + walk_scns(); + walk_tip(page->hdr_next_transaction); + walk_generators(); + } + vec<jrd_rel*>* vector; for (USHORT i = 0; (vector = attachment->att_relations) && i < vector->count(); i++) { #ifdef DEBUG_VAL_VERBOSE - if (i >= 32 /* rel_MAX */ ) // Why not system flag instead? + if (i > dbb->dbb_max_sys_rel) // Why not system flag instead? VAL_debug_level = 2; #endif jrd_rel* relation = (*vector)[i]; + + if (relation && relation->rel_flags & REL_check_existence) + relation = MET_lookup_relation_id(vdr_tdbb, i, false); + if (relation) + { + // Can't validate system relations online as they could be modified + // by system transaction which not acquires relation locks + if ((vdr_flags & VDR_online) && relation->isSystem()) + continue; + + if (vdr_tab_incl) + { + vdr_tab_incl->reset(); + if (!vdr_tab_incl->process((UCHAR*)relation->rel_name.c_str(), relation->rel_name.length()) || + !vdr_tab_incl->result()) + continue; + } + + if (vdr_tab_excl) + { + vdr_tab_excl->reset(); + if (!vdr_tab_excl->process((UCHAR*)relation->rel_name.c_str(), relation->rel_name.length()) || + vdr_tab_excl->result()) + continue; + } + + string relName; + relName.printf("Relation %d (%s)", relation->rel_id, relation->rel_name.c_str()); + output("%s\n", relName.c_str()); + + int errs = vdr_errors; walk_relation(relation); + errs = vdr_errors - errs; + + if (!errs) + output("%s is ok\n\n", relName.c_str()); + else + output("%s : %d ERRORS found\n\n", relName.c_str(), errs); + } } - CCH_RELEASE(vdr_tdbb, &window); + if (!(vdr_flags & VDR_online)) { + CCH_RELEASE(vdr_tdbb, &window); + } } Validation::RTN Validation::walk_data_page(jrd_rel* relation, ULONG page_number, @@ -1287,6 +1628,8 @@ Database* dbb = vdr_tdbb->getDatabase(); WIN window(DB_PAGE_SPACE, -1); + window.win_flags = WIN_garbage_collector; + data_page* page = 0; fetch_page(true, page_number, pag_data, &window, &page); @@ -1544,6 +1887,8 @@ while (next) { WIN window(DB_PAGE_SPACE, -1); + window.win_flags = WIN_garbage_collector; + btree_page* page = 0; fetch_page(true, next, pag_index, &window, &page); @@ -1612,6 +1957,14 @@ break; } + if (node.prefix > key.key_length) + { + corrupt(VAL_INDEX_PAGE_CORRUPT, relation, + id + 1, next, page->btr_level, node.nodePointer - (UCHAR*) page, __FILE__, __LINE__); + CCH_RELEASE(vdr_tdbb, &window); + return rtn_corrupt; + } + const UCHAR* p; const UCHAR* q; USHORT l; // temporary variable for length @@ -1731,10 +2084,12 @@ const ULONG down_number = node.pageNumber; const RecordNumber down_record_number = node.recordNumber; - // Note: validate == false for the fetch_page() call here + // Note: mark == false for the fetch_page() call here // as we don't want to mark the page as visited yet - we'll // mark it when we visit it for real later on WIN down_window(DB_PAGE_SPACE, -1); + down_window.win_flags = WIN_garbage_collector; + btree_page* down_page = 0; fetch_page(false, down_number, pag_index, &down_window, &down_page); const bool downLeafPage = (down_page->btr_level == 0); @@ -2014,6 +2369,8 @@ pointer_page* page = 0; WIN window(DB_PAGE_SPACE, -1); + window.win_flags = WIN_garbage_collector; + fetch_page(true, (*vector)[sequence], pag_pointer, &window, &page); #ifdef DEBUG_VAL_VERBOSE @@ -2100,6 +2457,33 @@ (page->ppg_next && page->ppg_next != (*vector)[sequence])) { CCH_RELEASE(vdr_tdbb, &window); + + if (vdr_flags & VDR_online) + { + // relation could be extended before we acquired its lock in PR mode + // let's re-read pointer pages and check again + + DPM_scan_pages(vdr_tdbb); + + vector = relation->getBasePages()->rel_pages; + + --sequence; + if (!vector || sequence >= static_cast<int>(vector->count())) { + return corrupt(VAL_P_PAGE_LOST, relation, sequence); + } + + fetch_page(false, (*vector)[sequence], pag_pointer, &window, &page); + + ++sequence; + const bool error = sequence >= static_cast<int>(vector->count()) || + (page->ppg_next && page->ppg_next != (*vector)[sequence]); + + CCH_RELEASE(vdr_tdbb, &window); + + if (!error) + return rtn_ok; + } + return corrupt(VAL_P_PAGE_INCONSISTENT, relation, page->ppg_next, sequence); } @@ -2204,6 +2588,8 @@ while (flags & rhd_incomplete) { WIN window(DB_PAGE_SPACE, -1); + window.win_flags = WIN_garbage_collector; + fetch_page(true, page_number, pag_data, &window, &page); const data_page::dpg_repeat* line = &page->dpg_rpt[line_number]; if (page->dpg_relation != relation->rel_id || @@ -2302,7 +2688,32 @@ return rtn_ok; } + AutoLock lckRead(vdr_tdbb); + jrd_rel::GCExclusive lckGC(vdr_tdbb, relation); + if (vdr_flags & VDR_online) + { + lckRead = jrd_rel::createLock(vdr_tdbb, NULL, relation, LCK_relation, false); + if (!LCK_lock(vdr_tdbb, lckRead, LCK_PR, vdr_lock_tout)) + { + output("Acquire relation lock failed\n"); + vdr_errors++; + return rtn_ok; + } + if (!lckGC.acquire(vdr_lock_tout)) + { + output("Acquire garbage collection lock failed\n"); + vdr_errors++; + return rtn_ok; + } + + WIN window(DB_PAGE_SPACE, -1); + header_page* page = 0; + fetch_page(false, (SLONG)HEADER_PAGE, pag_header, &window, &page); + vdr_max_transaction = page->hdr_next_transaction; + CCH_RELEASE(vdr_tdbb, &window); + } + // Walk pointer and selected data pages associated with relation vdr_rel_backversion_counter = 0; @@ -2311,6 +2722,11 @@ for (ULONG sequence = 0; true; sequence++) { + const vcl* vector = relation->getBasePages()->rel_pages; + const int ppCnt = vector ? vector->count() : 0; + + output(" process pointer page %4d of %4d\n", sequence, ppCnt); + const RTN result = walk_pointer_page(relation, sequence); if (result == rtn_eof) break; @@ -2321,6 +2737,8 @@ // Walk indices for the relation walk_root(relation); + lckGC.release(); + // See if the counts of backversions match if ((vdr_flags & VDR_records) && (vdr_rel_backversion_counter != vdr_rel_chain_counter)) @@ -2332,10 +2750,13 @@ } // try catch (const Firebird::Exception&) { - const char* msg = relation->rel_name.length() > 0 ? - "bugcheck during scan of table %d (%s)" : - "bugcheck during scan of table %d"; - gds__log(msg, relation->rel_id, relation->rel_name.c_str()); + if (!(vdr_flags & VDR_online)) + { + const char* msg = relation->rel_name.length() > 0 ? + "bugcheck during scan of table %d (%s)" : + "bugcheck during scan of table %d"; + gds__log(msg, relation->rel_id, relation->rel_name.c_str()); + } #ifdef DEBUG_VAL_VERBOSE if (VAL_debug_level) { @@ -2375,7 +2796,33 @@ fetch_page(true, relPages->rel_index_root, pag_root, &window, &page); for (USHORT i = 0; i < page->irt_count; i++) + { + if (page->irt_rpt[i].irt_root == 0) + continue; + + MetaName index; + + CCH_RELEASE(vdr_tdbb, &window); + MET_lookup_index(vdr_tdbb, index, relation->rel_name, i + 1); + fetch_page(false, relPages->rel_index_root, pag_root, &window, &page); + + if (vdr_idx_incl) + { + vdr_idx_incl->reset(); + if (!vdr_idx_incl->process((UCHAR*)index.c_str(), index.length()) || !vdr_idx_incl->result()) + continue; + } + + if (vdr_idx_excl) + { + vdr_idx_excl->reset(); + if (!vdr_idx_excl->process((UCHAR*)index.c_str(), index.length()) || vdr_idx_excl->result()) + continue; + } + + output("Index %d (%s)\n", i + 1, index.c_str()); walk_index(relation, *page, i); + } CCH_RELEASE(vdr_tdbb, &window); Modified: firebird/trunk/src/jrd/validation.h =================================================================== --- firebird/trunk/src/jrd/validation.h 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/jrd/validation.h 2015-06-19 12:07:41 UTC (rev 61851) @@ -32,6 +32,11 @@ #include "../jrd/RecordNumber.h" +namespace Firebird +{ +class UtilSvc; +} + namespace Jrd { @@ -45,6 +50,15 @@ class Validation { +public: + // vdr_flags + + static const USHORT VDR_online = 0x01; // online validation (no exclusive attachment) + static const USHORT VDR_update = 0x02; // fix simple things + static const USHORT VDR_repair = 0x04; // fix non-simple things (-mend) + static const USHORT VDR_records = 0x08; // Walk all records + static const USHORT VDR_partial = 0x10; // Walk only (some) relations + private: enum FETCH_CODE @@ -112,12 +126,6 @@ static const MSG_ENTRY vdr_msg_table[VAL_MAX_ERROR]; - // vdr_flags - - static const USHORT VDR_update = 2; // fix simple things - static const USHORT VDR_repair = 4; // fix non-simple things (-mend) - static const USHORT VDR_records = 8; // Walk all records - thread_db* vdr_tdbb; ULONG vdr_max_page; USHORT vdr_flags; @@ -132,11 +140,18 @@ PageBitmap* vdr_page_bitmap; ULONG vdr_err_counts[VAL_MAX_ERROR]; + Firebird::UtilSvc* vdr_service; + PatternMatcher* vdr_tab_incl; + PatternMatcher* vdr_tab_excl; + PatternMatcher* vdr_idx_incl; + PatternMatcher* vdr_idx_excl; + int vdr_lock_tout; + public: - Validation(); - ~Validation() {}; + Validation(thread_db*, Firebird::UtilSvc* uSvc = NULL); + ~Validation(); - bool run(thread_db* tdbb, USHORT switches); + bool run(thread_db* tdbb, USHORT flags); ULONG getInfo(UCHAR item); private: @@ -145,6 +160,9 @@ FETCH_CODE fetch_page(bool validate, ULONG, USHORT, WIN*, void*); void garbage_collect(); + void parse_args(thread_db*); + void output(const char*, ...); + RTN walk_blob(jrd_rel*, const Ods::blh*, USHORT, RecordNumber); RTN walk_chain(jrd_rel*, const Ods::rhd*, RecordNumber); RTN walk_data_page(jrd_rel*, ULONG, ULONG, UCHAR&); Modified: firebird/trunk/src/jrd/vio.cpp =================================================================== --- firebird/trunk/src/jrd/vio.cpp 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/jrd/vio.cpp 2015-06-19 12:07:41 UTC (rev 61851) @@ -171,7 +171,46 @@ static void update_in_place(thread_db*, jrd_tra*, record_param*, record_param*); static void verb_post(thread_db*, jrd_tra*, record_param*, Record*, const bool, const bool); +static bool assert_gc_enabled(const jrd_tra* transaction, const jrd_rel* relation) +{ +/************************************** + * + * a s s e r t _ g c _ e n a b l e d + * + ************************************** + * + * Functional description + * Ensure that calls of purge\expunge\VIO_backout are safe and don't break + * results of online validation run. + * + * Notes + * System and temporary relations are not validated online. + * Non-zero rel_sweep_count is possible only under GCShared control when + * garbage collection is enabled. + * + * VIO_backout is more complex as it could run without GCShared control. + * Therefore we additionally check if we own relation lock in "write" mode - + * in this case online validation is not run against given relation. + * + **************************************/ + if (relation->rel_sweep_count || relation->isSystem() || relation->isTemporary()) + return true; + if (relation->rel_flags & REL_gc_disabled) + return false; + + vec<Lock*>* vector = transaction->tra_relation_locks; + if (!vector || vector->count() < relation->rel_id) + return false; + + Lock* lock = (*vector)[relation->rel_id]; + if (!lock) + return false; + + return (lock->lck_physical == LCK_SW) || (lock->lck_physical == LCK_EX); +} + + // Pick up relation ids #include "../jrd/ini.h" @@ -338,6 +377,8 @@ Database* dbb = tdbb->getDatabase(); CHECK_DBB(dbb); + fb_assert(assert_gc_enabled(transaction, rpb->rpb_relation)); + #ifdef VIO_DEBUG VIO_trace(DEBUG_WRITES, "VIO_backout (record_param %"QUADFORMAT"d, transaction %"ULONGFORMAT")\n", @@ -818,8 +859,10 @@ } case tra_precommitted: + {// scope + jrd_rel::GCShared gcGuard(tdbb, rpb->rpb_relation); - if ((attachment->att_flags & ATT_NO_CLEANUP) || + if (attachment->att_flags & ATT_NO_CLEANUP || !gcGuard.gcEnabled() || (rpb->rpb_flags & (rpb_chained | rpb_gc_active))) { if (rpb->rpb_b_page == 0) @@ -886,7 +929,7 @@ if (!DPM_get(tdbb, rpb, LCK_read)) return false; - + } // scope break; // If it's active, prepare to fetch the old version. @@ -1072,6 +1115,12 @@ else { CCH_RELEASE(tdbb, &rpb->getWindow(tdbb)); + + jrd_rel::GCShared gcGuard(tdbb, rpb->rpb_relation); + + if (!gcGuard.gcEnabled()) + return false; + expunge(tdbb, rpb, transaction, 0); } @@ -1114,8 +1163,15 @@ return true; } - purge(tdbb, rpb); + { // scope + jrd_rel::GCShared gcGuard(tdbb, rpb->rpb_relation); + if (!gcGuard.gcEnabled()) + return true; + + purge(tdbb, rpb); + } + // Go back to be primary record version and chase versions all over again. if (!DPM_get(tdbb, rpb, LCK_read)) return false; @@ -1881,7 +1937,9 @@ rpb->rpb_f_page, rpb->rpb_f_line); #endif - if (attachment->att_flags & ATT_no_cleanup) + jrd_rel::GCShared gcGuard(tdbb, rpb->rpb_relation); + + if (attachment->att_flags & ATT_no_cleanup || !gcGuard.gcEnabled()) return true; const TraNumber oldest_snapshot = rpb->rpb_relation->isTemporary() ? @@ -2165,7 +2223,14 @@ if (transaction->tra_attachment->att_flags & ATT_no_cleanup) return !foreign_key; - VIO_backout(tdbb, rpb, transaction); + { + jrd_rel::GCShared gcGuard(tdbb, rpb->rpb_relation); + + if (!gcGuard.gcEnabled()) + return !foreign_key; + + VIO_backout(tdbb, rpb, transaction); + } continue; case tra_precommitted: Attachment::Checkout cout(attachment, FB_FUNCTION); @@ -2267,7 +2332,14 @@ if (transaction->tra_attachment->att_flags & ATT_no_cleanup) return !foreign_key; - VIO_backout(tdbb, rpb, transaction); + { + jrd_rel::GCShared gcGuard(tdbb, rpb->rpb_relation); + + if (!gcGuard.gcEnabled()) + return !foreign_key; + + VIO_backout(tdbb, rpb, transaction); + } break; case tra_limbo: @@ -3505,6 +3577,7 @@ vec<jrd_rel*>* vector = 0; GarbageCollector* gc = dbb->dbb_garbage_collector; + bool ret = true; try { @@ -3519,10 +3592,16 @@ !relation->isTemporary() && relation->getPages(tdbb)->rel_pages) { + jrd_rel::GCShared gcGuard(tdbb, relation); + if (!gcGuard.gcEnabled()) + { + ret = false; + break; + } + rpb.rpb_relation = relation; rpb.rpb_number.setValue(BOF_NUMBER); rpb.rpb_org_scans = relation->rel_scan_count++; - ++relation->rel_sweep_count; traceSweep->beginSweepRelation(relation); @@ -3545,7 +3624,6 @@ traceSweep->endSweepRelation(relation); - --relation->rel_sweep_count; --relation->rel_scan_count; } } @@ -3559,17 +3637,13 @@ if (relation) { - if (relation->rel_sweep_count) - --relation->rel_sweep_count; - if (relation->rel_scan_count) --relation->rel_scan_count; } ERR_punt(); } - - return true; + return ret; } @@ -4424,6 +4498,8 @@ SET_TDBB(tdbb); Jrd::Attachment* attachment = transaction->tra_attachment; + fb_assert(assert_gc_enabled(transaction, rpb->rpb_relation)); + #ifdef VIO_DEBUG VIO_trace(DEBUG_WRITES, "expunge (record_param %"QUADFORMAT"d, transaction %"ULONGFORMAT @@ -4706,7 +4782,10 @@ if (gc_bitmap) { - ++relation->rel_sweep_count; + jrd_rel::GCShared gcGuard(tdbb, relation); + if (!gcGuard.gcEnabled()) + continue; + rpb.rpb_relation = relation; while (gc_bitmap->getFirst()) @@ -4715,7 +4794,6 @@ if (!(dbb->dbb_flags & DBB_garbage_collector)) { - --relation->rel_sweep_count; gc_exit = true; break; } @@ -4758,7 +4836,6 @@ if (!(dbb->dbb_flags & DBB_garbage_collector)) { - --relation->rel_sweep_count; gc_exit = true; break; } @@ -4769,6 +4846,12 @@ break; } + if (relation->rel_flags & REL_gc_disabled) + { + rel_exit = true; + break; + } + if (--tdbb->tdbb_quantum < 0) JRD_reschedule(tdbb, SWEEP_QUANTUM, true); @@ -4785,7 +4868,6 @@ delete gc_bitmap; gc_bitmap = NULL; - --relation->rel_sweep_count; } } @@ -4823,10 +4905,6 @@ { ex.stuffException(&status_vector); iscDbLogStatus(dbb->dbb_filename.c_str(), &status_vector); - - if (relation && relation->rel_sweep_count) - --relation->rel_sweep_count; - // continue execution to clean up } @@ -5671,6 +5749,8 @@ Database* dbb = tdbb->getDatabase(); CHECK_DBB(dbb); + fb_assert(assert_gc_enabled(tdbb->getTransaction(), rpb->rpb_relation)); + #ifdef VIO_DEBUG VIO_trace(DEBUG_TRACE_ALL, "purge (record_param %"QUADFORMAT"d)\n", rpb->rpb_number.getValue()); Modified: firebird/trunk/src/utilities/fbsvcmgr/fbsvcmgr.cpp =================================================================== --- firebird/trunk/src/utilities/fbsvcmgr/fbsvcmgr.cpp 2015-06-19 10:10:37 UTC (rev 61850) +++ firebird/trunk/src/utilities/fbsvcmgr/fbsvcmgr.cpp 2015-06-19 12:07:41 UTC (rev 61851) @@ -250,7 +250,14 @@ if (! *av) return false; - int n = atoi(*av++); + char* err = NULL; + SLONG n = strtol(*av++, &err, 10); + + if (err && *err) + { + (Arg::Gds(isc_fbsvcmgr_bad_arg) << av[-2]).raise(); + } + spb.insertInt(tag, n); return true; @@ -499,6 +506,17 @@ {0, 0, 0, 0, 0} }; +const SvcSwitches validateOptions[] = +{ + {"dbname", putStringArgument, 0, isc_spb_dbname, 0}, + {"val_tab_incl", putStringArgument, 0, isc_spb_val_tab_incl, 0}, + {"val_tab_excl", putStringArgument, 0, isc_spb_val_tab_excl, 0}, + {"val_idx_incl", putStringArgument, 0, isc_spb_val_idx_incl, 0}, + {"val_idx_excl", putStringArgument, 0, isc_spb_val_idx_excl, 0}, + {"val_lock_timeout", putNumericArgument, 0, isc_spb_val_lock_timeout, 0}, + {0, 0, 0, 0, 0} +}; + const SvcSwitches actionSwitch[] = { {"action_backup", putSingleTag, backupOptions, isc_action_svc_backup, isc_info_svc_to_eof}, @@ -522,6 +540,7 @@ {"action_trace_list", putSingleTag, 0, isc_action_svc_trace_list, isc_info_svc_line}, {"action_set_mapping", putSingleTag, mappingOptions, isc_action_svc_set_mapping, 0}, {"action_drop_mapping", putSingleTag, mappingOptions, isc_action_svc_drop_mapping, 0}, + {"action_validate", putSingleTag, validateOptions, isc_action_svc_validate, isc_info_svc_line}, {0, 0, 0, 0, 0} }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2015-06-20 00:09:41
|
Revision: 61853 http://sourceforge.net/p/firebird/code/61853 Author: firebirds Date: 2015-06-20 00:09:39 +0000 (Sat, 20 Jun 2015) 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 2015-06-19 13:55:27 UTC (rev 61852) +++ firebird/trunk/ChangeLog 2015-06-20 00:09:39 UTC (rev 61853) @@ -1,3 +1,37 @@ + 2015-06-19 13:55 alexpeshkoff + M src/jrd/validation.cpp +Fixed gcc build + + 2015-06-19 12:07 hvlad + A doc/README.online_validation + M src/common/IntlParametersBlock.cpp + M src/common/classes/ClumpletReader.cpp + M src/common/classes/SyncObject.cpp + M src/include/consts_pub.h + M src/jrd/Attachment.cpp + M src/jrd/Relation.cpp + M src/jrd/Relation.h + M src/jrd/lck.cpp + M src/jrd/lck.h + M src/jrd/lck_proto.h + M src/jrd/rlck.cpp + M src/jrd/svc.cpp + M src/jrd/svc_tab.cpp + M src/jrd/val_proto.h + M src/jrd/validation.cpp + M src/jrd/validation.h + M src/jrd/vio.cpp + M src/utilities/fbsvcmgr/fbsvcmgr.cpp +Feature CORE-4707 : Implement ability to validate tables and indices online + + 2015-06-19 10:10 alexpeshkoff + M src/jrd/UserManagement.cpp +Always display SYSDBA as sec$admin (yes, he is really always admin) + + 2015-06-19 09:30 alexpeshkoff + M src/utilities/gsec/gsec.cpp +Mark gsec as deprecated + 2015-06-18 22:30 robocop M src/isql/isql.epp CORE-4817. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-19 13:55:27 UTC (rev 61852) +++ firebird/trunk/src/jrd/build_no.h 2015-06-20 00:09:39 UTC (rev 61853) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31888 + FORMAL BUILD NUMBER:31892 */ -#define PRODUCT_VER_STRING "3.0.0.31888" -#define FILE_VER_STRING "WI-T3.0.0.31888" -#define LICENSE_VER_STRING "WI-T3.0.0.31888" -#define FILE_VER_NUMBER 3, 0, 0, 31888 +#define PRODUCT_VER_STRING "3.0.0.31892" +#define FILE_VER_STRING "WI-T3.0.0.31892" +#define LICENSE_VER_STRING "WI-T3.0.0.31892" +#define FILE_VER_NUMBER 3, 0, 0, 31892 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31888" +#define FB_BUILD_NO "31892" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-19 13:55:27 UTC (rev 61852) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-20 00:09:39 UTC (rev 61853) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31888 +BuildNum=31892 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...> - 2015-06-22 00:09:01
|
Revision: 61855 http://sourceforge.net/p/firebird/code/61855 Author: firebirds Date: 2015-06-22 00:08:59 +0000 (Mon, 22 Jun 2015) 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 2015-06-21 15:53:53 UTC (rev 61854) +++ firebird/trunk/ChangeLog 2015-06-22 00:08:59 UTC (rev 61855) @@ -1,3 +1,7 @@ + 2015-06-21 15:53 asfernandes + M src/jrd/SimilarToMatcher.h +Postfix for CORE-4740 - SIMILAR TO with quantifier {n,} in the pattern: 1) fails on 2.5 ("Invalid pattern"), 2) strange result in 3.0. + 2015-06-19 13:55 alexpeshkoff M src/jrd/validation.cpp Fixed gcc build Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-21 15:53:53 UTC (rev 61854) +++ firebird/trunk/src/jrd/build_no.h 2015-06-22 00:08:59 UTC (rev 61855) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31892 + FORMAL BUILD NUMBER:31893 */ -#define PRODUCT_VER_STRING "3.0.0.31892" -#define FILE_VER_STRING "WI-T3.0.0.31892" -#define LICENSE_VER_STRING "WI-T3.0.0.31892" -#define FILE_VER_NUMBER 3, 0, 0, 31892 +#define PRODUCT_VER_STRING "3.0.0.31893" +#define FILE_VER_STRING "WI-T3.0.0.31893" +#define LICENSE_VER_STRING "WI-T3.0.0.31893" +#define FILE_VER_NUMBER 3, 0, 0, 31893 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31892" +#define FB_BUILD_NO "31893" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-21 15:53:53 UTC (rev 61854) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-22 00:08:59 UTC (rev 61855) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31892 +BuildNum=31893 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...> - 2015-06-23 00:09:03
|
Revision: 61858 http://sourceforge.net/p/firebird/code/61858 Author: firebirds Date: 2015-06-23 00:09:01 +0000 (Tue, 23 Jun 2015) 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 2015-06-22 14:07:49 UTC (rev 61857) +++ firebird/trunk/ChangeLog 2015-06-23 00:09:01 UTC (rev 61858) @@ -1,3 +1,7 @@ + 2015-06-22 14:07 alexpeshkoff + M src/msgs/messages2.sql +Change text - looks like we will not have QSG soon enough + 2015-06-21 15:53 asfernandes M src/jrd/SimilarToMatcher.h Postfix for CORE-4740 - SIMILAR TO with quantifier {n,} in the pattern: 1) fails on 2.5 ("Invalid pattern"), 2) strange result in 3.0. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-22 14:07:49 UTC (rev 61857) +++ firebird/trunk/src/jrd/build_no.h 2015-06-23 00:09:01 UTC (rev 61858) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31893 + FORMAL BUILD NUMBER:31894 */ -#define PRODUCT_VER_STRING "3.0.0.31893" -#define FILE_VER_STRING "WI-T3.0.0.31893" -#define LICENSE_VER_STRING "WI-T3.0.0.31893" -#define FILE_VER_NUMBER 3, 0, 0, 31893 +#define PRODUCT_VER_STRING "3.0.0.31894" +#define FILE_VER_STRING "WI-T3.0.0.31894" +#define LICENSE_VER_STRING "WI-T3.0.0.31894" +#define FILE_VER_NUMBER 3, 0, 0, 31894 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31893" +#define FB_BUILD_NO "31894" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-22 14:07:49 UTC (rev 61857) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-23 00:09:01 UTC (rev 61858) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31893 +BuildNum=31894 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...> - 2015-06-24 00:09:30
|
Revision: 61863 http://sourceforge.net/p/firebird/code/61863 Author: firebirds Date: 2015-06-24 00:09:27 +0000 (Wed, 24 Jun 2015) 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 2015-06-23 22:00:25 UTC (rev 61862) +++ firebird/trunk/ChangeLog 2015-06-24 00:09:27 UTC (rev 61863) @@ -1,3 +1,11 @@ + 2015-06-23 22:00 dimitr + M doc/sql.extensions/README.keywords +Updated the docs for Beta 2. + + 2015-06-23 18:38 dimitr + M doc/WhatsNew +Updated the docs for Beta 2. + 2015-06-22 14:07 alexpeshkoff M src/msgs/messages2.sql Change text - looks like we will not have QSG soon enough Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-23 22:00:25 UTC (rev 61862) +++ firebird/trunk/src/jrd/build_no.h 2015-06-24 00:09:27 UTC (rev 61863) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31894 + FORMAL BUILD NUMBER:31896 */ -#define PRODUCT_VER_STRING "3.0.0.31894" -#define FILE_VER_STRING "WI-T3.0.0.31894" -#define LICENSE_VER_STRING "WI-T3.0.0.31894" -#define FILE_VER_NUMBER 3, 0, 0, 31894 +#define PRODUCT_VER_STRING "3.0.0.31896" +#define FILE_VER_STRING "WI-T3.0.0.31896" +#define LICENSE_VER_STRING "WI-T3.0.0.31896" +#define FILE_VER_NUMBER 3, 0, 0, 31896 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31894" +#define FB_BUILD_NO "31896" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-23 22:00:25 UTC (rev 61862) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-24 00:09:27 UTC (rev 61863) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31894 +BuildNum=31896 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...> - 2015-06-26 00:09:26
|
Revision: 61869 http://sourceforge.net/p/firebird/code/61869 Author: firebirds Date: 2015-06-26 00:09:24 +0000 (Fri, 26 Jun 2015) 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 2015-06-25 16:02:43 UTC (rev 61868) +++ firebird/trunk/ChangeLog 2015-06-26 00:09:24 UTC (rev 61869) @@ -1,3 +1,12 @@ + 2015-06-25 16:02 alexpeshkoff + M src/common/classes/auto.h + M src/dsql/DdlNodes.epp +Fixed CORE-4836: Grant update(c) on t to U01 with grant option: user U01 will not be able to "revoke update(c) on t from <user | role>" if this U01 do some DML before revoke + + 2015-06-25 15:23 alexpeshkoff + M src/include/gen/msgs.h +Generated file + 2015-06-23 22:00 dimitr M doc/sql.extensions/README.keywords Updated the docs for Beta 2. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-25 16:02:43 UTC (rev 61868) +++ firebird/trunk/src/jrd/build_no.h 2015-06-26 00:09:24 UTC (rev 61869) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31896 + FORMAL BUILD NUMBER:31898 */ -#define PRODUCT_VER_STRING "3.0.0.31896" -#define FILE_VER_STRING "WI-T3.0.0.31896" -#define LICENSE_VER_STRING "WI-T3.0.0.31896" -#define FILE_VER_NUMBER 3, 0, 0, 31896 +#define PRODUCT_VER_STRING "3.0.0.31898" +#define FILE_VER_STRING "WI-T3.0.0.31898" +#define LICENSE_VER_STRING "WI-T3.0.0.31898" +#define FILE_VER_NUMBER 3, 0, 0, 31898 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31896" +#define FB_BUILD_NO "31898" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-25 16:02:43 UTC (rev 61868) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-26 00:09:24 UTC (rev 61869) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31896 +BuildNum=31898 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...> - 2015-06-27 00:09:18
|
Revision: 61880 http://sourceforge.net/p/firebird/code/61880 Author: firebirds Date: 2015-06-27 00:09:16 +0000 (Sat, 27 Jun 2015) 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 2015-06-26 15:52:56 UTC (rev 61879) +++ firebird/trunk/ChangeLog 2015-06-27 00:09:16 UTC (rev 61880) @@ -1,3 +1,29 @@ + 2015-06-26 15:52 paul_reeves + M examples/empbuild/empbuild.e +Disconnect from empbuild database on error. + + 2015-06-26 15:52 paul_reeves + M builds/win32/make_examples.bat +Set ERRLEV on error so as to break the build process correctly. + + 2015-06-26 13:39 alexpeshkoff + M src/common/os/guid.h + M src/common/os/posix/guid.cpp + M src/jrd/SysFunction.cpp +Front-ported HPUX changes + + 2015-06-26 13:23 paul_reeves + M examples/empbuild/empbuild.e +Improve error handling and document addlang correctly as a function that updates an array, not a blob. + + 2015-06-26 12:55 alexpeshkoff + M src/common/classes/semaphore.h +Front-port AIX changes + + 2015-06-26 08:15 paulbeach + M configure.ac +shared lib extension on ia64 hpux is sl + 2015-06-25 16:02 alexpeshkoff M src/common/classes/auto.h M src/dsql/DdlNodes.epp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-26 15:52:56 UTC (rev 61879) +++ firebird/trunk/src/jrd/build_no.h 2015-06-27 00:09:16 UTC (rev 61880) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31898 + FORMAL BUILD NUMBER:31904 */ -#define PRODUCT_VER_STRING "3.0.0.31898" -#define FILE_VER_STRING "WI-T3.0.0.31898" -#define LICENSE_VER_STRING "WI-T3.0.0.31898" -#define FILE_VER_NUMBER 3, 0, 0, 31898 +#define PRODUCT_VER_STRING "3.0.0.31904" +#define FILE_VER_STRING "WI-T3.0.0.31904" +#define LICENSE_VER_STRING "WI-T3.0.0.31904" +#define FILE_VER_NUMBER 3, 0, 0, 31904 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31898" +#define FB_BUILD_NO "31904" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-26 15:52:56 UTC (rev 61879) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-27 00:09:16 UTC (rev 61880) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31898 +BuildNum=31904 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <asf...@us...> - 2015-06-29 01:38:18
|
Revision: 61883 http://sourceforge.net/p/firebird/code/61883 Author: asfernandes Date: 2015-06-29 01:38:16 +0000 (Mon, 29 Jun 2015) Log Message: ----------- This should fix the problem of building examples in Windows 64-bit, although it does not answear what exactly is happening there. Modified Paths: -------------- firebird/trunk/builds/posix/Makefile.in.examples firebird/trunk/src/gpre/std/gpre_meta.epp Modified: firebird/trunk/builds/posix/Makefile.in.examples =================================================================== --- firebird/trunk/builds/posix/Makefile.in.examples 2015-06-29 01:02:52 UTC (rev 61882) +++ firebird/trunk/builds/posix/Makefile.in.examples 2015-06-29 01:38:16 UTC (rev 61883) @@ -57,7 +57,7 @@ #LD_LIBRARY_PATH := $(LD_LIBRARY_PATH):$(GEN_ROOT)/firebird/lib #export LD_LIBRARY_PATH #endif -GPRE_FLAGS= -r -m -z -n +GPRE_FLAGS= -m -z -n LIB_LINK_RPATH = $(call LIB_PLATFORM_RPATH,$(if $(subst intl,,$(1)),$(LIB),$(LIB)/../intl)) LIB_LINK_MAPFILE = Modified: firebird/trunk/src/gpre/std/gpre_meta.epp =================================================================== --- firebird/trunk/src/gpre/std/gpre_meta.epp 2015-06-29 01:02:52 UTC (rev 61882) +++ firebird/trunk/src/gpre/std/gpre_meta.epp 2015-06-29 01:38:16 UTC (rev 61883) @@ -886,7 +886,7 @@ { case blr_varying: case blr_text: - if (char_length != 0) + if (char_length != 0 && sub_type != dsc_text_type_none) l = char_length * 4; dtype = dtype_text; @@ -899,7 +899,7 @@ case blr_cstring: dtype = dtype_cstring; - if (char_length != 0) + if (char_length != 0 && sub_type != dsc_text_type_none) l = char_length * 4; ++l; break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2015-06-30 00:09:17
|
Revision: 61885 http://sourceforge.net/p/firebird/code/61885 Author: firebirds Date: 2015-06-30 00:09:14 +0000 (Tue, 30 Jun 2015) 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 2015-06-29 14:50:28 UTC (rev 61884) +++ firebird/trunk/ChangeLog 2015-06-30 00:09:14 UTC (rev 61885) @@ -1,3 +1,20 @@ + 2015-06-29 01:38 asfernandes + M builds/posix/Makefile.in.examples + M src/gpre/std/gpre_meta.epp +This should fix the problem of building examples in Windows 64-bit, although it does not answear what exactly is happening there. + + 2015-06-29 01:02 asfernandes + M src/common/classes/ClumpletReader.cpp + M src/common/classes/SyncObject.cpp + M src/jrd/Relation.cpp + M src/jrd/Relation.h + M src/jrd/lck.cpp + M src/jrd/lck_proto.h + M src/jrd/validation.cpp + M src/jrd/vio.cpp + M src/utilities/fbsvcmgr/fbsvcmgr.cpp +Misc. + 2015-06-26 15:52 paul_reeves M examples/empbuild/empbuild.e Disconnect from empbuild database on error. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-29 14:50:28 UTC (rev 61884) +++ firebird/trunk/src/jrd/build_no.h 2015-06-30 00:09:14 UTC (rev 61885) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31904 + FORMAL BUILD NUMBER:31906 */ -#define PRODUCT_VER_STRING "3.0.0.31904" -#define FILE_VER_STRING "WI-T3.0.0.31904" -#define LICENSE_VER_STRING "WI-T3.0.0.31904" -#define FILE_VER_NUMBER 3, 0, 0, 31904 +#define PRODUCT_VER_STRING "3.0.0.31906" +#define FILE_VER_STRING "WI-T3.0.0.31906" +#define LICENSE_VER_STRING "WI-T3.0.0.31906" +#define FILE_VER_NUMBER 3, 0, 0, 31906 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31904" +#define FB_BUILD_NO "31906" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-29 14:50:28 UTC (rev 61884) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-06-30 00:09:14 UTC (rev 61885) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31904 +BuildNum=31906 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...> - 2015-07-01 00:09:47
|
Revision: 61891 http://sourceforge.net/p/firebird/code/61891 Author: firebirds Date: 2015-07-01 00:09:45 +0000 (Wed, 01 Jul 2015) 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 2015-06-30 19:15:08 UTC (rev 61890) +++ firebird/trunk/ChangeLog 2015-07-01 00:09:45 UTC (rev 61891) @@ -1,3 +1,22 @@ + 2015-06-30 16:01 alexpeshkoff + M src/include/consts_pub.h + M src/jrd/Attachment.h + M src/jrd/Database.h + M src/jrd/EngineInterface.h + M src/jrd/Mapping.cpp + M src/jrd/jrd.cpp + M src/jrd/svc.h + M src/jrd/trace/TraceCmdLine.cpp + M src/jrd/trace/TraceConfigStorage.cpp + M src/jrd/trace/TraceConfigStorage.h + M src/jrd/trace/TraceManager.cpp + M src/jrd/trace/TraceService.cpp + M src/jrd/trace/TraceService.h + M src/jrd/trace/TraceSession.h + M src/remote/server/server.cpp + M src/utilities/fbtracemgr/traceMgrMain.cpp +Implemented CORE-4851: Apply methods, used for cross security database authentication, to the trace + 2015-06-29 01:38 asfernandes M builds/posix/Makefile.in.examples M src/gpre/std/gpre_meta.epp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-06-30 19:15:08 UTC (rev 61890) +++ firebird/trunk/src/jrd/build_no.h 2015-07-01 00:09:45 UTC (rev 61891) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31906 + FORMAL BUILD NUMBER:31907 */ -#define PRODUCT_VER_STRING "3.0.0.31906" -#define FILE_VER_STRING "WI-T3.0.0.31906" -#define LICENSE_VER_STRING "WI-T3.0.0.31906" -#define FILE_VER_NUMBER 3, 0, 0, 31906 +#define PRODUCT_VER_STRING "3.0.0.31907" +#define FILE_VER_STRING "WI-T3.0.0.31907" +#define LICENSE_VER_STRING "WI-T3.0.0.31907" +#define FILE_VER_NUMBER 3, 0, 0, 31907 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31906" +#define FB_BUILD_NO "31907" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-06-30 19:15:08 UTC (rev 61890) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-07-01 00:09:45 UTC (rev 61891) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31906 +BuildNum=31907 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...> - 2015-07-02 00:10:37
|
Revision: 61908 http://sourceforge.net/p/firebird/code/61908 Author: firebirds Date: 2015-07-02 00:10:35 +0000 (Thu, 02 Jul 2015) 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 2015-07-01 21:53:38 UTC (rev 61907) +++ firebird/trunk/ChangeLog 2015-07-02 00:10:35 UTC (rev 61908) @@ -1,3 +1,19 @@ + 2015-07-01 19:02 dimitr + M src/isql/show.epp +This should fix the SHOW SEQU output on 64-bit Linux. + + 2015-07-01 17:10 asfernandes + M src/dsql/StmtNodes.cpp +Fixed CORE-4848 - MERGE ... WHEN NOT MATCHED ... RETURNING returns wrong (non-null) values when no insert is performed. + + 2015-07-01 01:49 robocop + M src/jrd/validation.h +Misc. + + 2015-07-01 01:10 robocop + M doc/README.online_validation +Misc. + 2015-06-30 16:01 alexpeshkoff M src/include/consts_pub.h M src/jrd/Attachment.h Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2015-07-01 21:53:38 UTC (rev 61907) +++ firebird/trunk/src/jrd/build_no.h 2015-07-02 00:10:35 UTC (rev 61908) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:31907 + FORMAL BUILD NUMBER:31911 */ -#define PRODUCT_VER_STRING "3.0.0.31907" -#define FILE_VER_STRING "WI-T3.0.0.31907" -#define LICENSE_VER_STRING "WI-T3.0.0.31907" -#define FILE_VER_NUMBER 3, 0, 0, 31907 +#define PRODUCT_VER_STRING "3.0.0.31911" +#define FILE_VER_STRING "WI-T3.0.0.31911" +#define LICENSE_VER_STRING "WI-T3.0.0.31911" +#define FILE_VER_NUMBER 3, 0, 0, 31911 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "31907" +#define FB_BUILD_NO "31911" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Beta 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2015-07-01 21:53:38 UTC (rev 61907) +++ firebird/trunk/src/misc/writeBuildNum.sh 2015-07-02 00:10:35 UTC (rev 61908) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=31907 +BuildNum=31911 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |