From: <fir...@us...> - 2014-01-06 00:30:55
|
Revision: 58996 http://sourceforge.net/p/firebird/code/58996 Author: firebirds Date: 2014-01-06 00:30:51 +0000 (Mon, 06 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-05 19:40:07 UTC (rev 58995) +++ firebird/trunk/ChangeLog 2014-01-06 00:30:51 UTC (rev 58996) @@ -1,3 +1,21 @@ + 2014-01-05 19:40 dimitr + M src/dsql/BoolNodes.cpp + M src/jrd/Optimizer.cpp + M src/jrd/Optimizer.h + M src/jrd/RecordSourceNodes.h + M src/jrd/opt.cpp + M src/jrd/par.cpp + M src/jrd/rse.h +Resolved CORE-1482: Make optimizer to consider ORDER BY optimization when making decision about join order. +Also, improved (hopefully) cost calculation for navigational retrievals. + + 2014-01-05 16:25 dimitr + M src/remote/remote.h + M src/remote/server/server.cpp + M src/yvalve/YObjects.h + M src/yvalve/why.cpp +Fixed CORE-4313: Error "Attempt to reopen an open cursor" may be raised if the query handle is reused in a different transaction. + 2013-12-29 15:55 hvlad M src/jrd/validation.cpp One more typo in validation messages Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-05 19:40:07 UTC (rev 58995) +++ firebird/trunk/src/jrd/build_no.h 2014-01-06 00:30:51 UTC (rev 58996) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30813 + FORMAL BUILD NUMBER:30815 */ -#define PRODUCT_VER_STRING "3.0.0.30813" -#define FILE_VER_STRING "WI-T3.0.0.30813" -#define LICENSE_VER_STRING "WI-T3.0.0.30813" -#define FILE_VER_NUMBER 3, 0, 0, 30813 +#define PRODUCT_VER_STRING "3.0.0.30815" +#define FILE_VER_STRING "WI-T3.0.0.30815" +#define LICENSE_VER_STRING "WI-T3.0.0.30815" +#define FILE_VER_NUMBER 3, 0, 0, 30815 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30813" +#define FB_BUILD_NO "30815" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-05 19:40:07 UTC (rev 58995) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-06 00:30:51 UTC (rev 58996) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30813 +BuildNum=30815 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-07 00:36:05
|
Revision: 59001 http://sourceforge.net/p/firebird/code/59001 Author: firebirds Date: 2014-01-07 00:36:02 +0000 (Tue, 07 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-06 09:24:46 UTC (rev 59000) +++ firebird/trunk/ChangeLog 2014-01-07 00:36:02 UTC (rev 59001) @@ -1,3 +1,27 @@ + 2014-01-06 09:24 dimitr + M src/jrd/Optimizer.cpp +Fixed CORE-4118: Expression index may be not used for derived fields or view fields. + + 2014-01-06 08:03 dimitr + M src/remote/server/server.cpp + M src/yvalve/why.cpp +Restored the error reporting for the already closed cursor. + + 2014-01-06 00:57 asfernandes + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/parse.y +Change type of user flags from int to bool. + + 2014-01-06 00:51 asfernandes + M src/common/config/config.cpp + M src/isql/extract.epp + M src/jrd/Optimizer.cpp + M src/jrd/opt.cpp + M src/yvalve/YObjects.h + M src/yvalve/why.cpp +Misc. + 2014-01-05 19:40 dimitr M src/dsql/BoolNodes.cpp M src/jrd/Optimizer.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-06 09:24:46 UTC (rev 59000) +++ firebird/trunk/src/jrd/build_no.h 2014-01-07 00:36:02 UTC (rev 59001) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30815 + FORMAL BUILD NUMBER:30819 */ -#define PRODUCT_VER_STRING "3.0.0.30815" -#define FILE_VER_STRING "WI-T3.0.0.30815" -#define LICENSE_VER_STRING "WI-T3.0.0.30815" -#define FILE_VER_NUMBER 3, 0, 0, 30815 +#define PRODUCT_VER_STRING "3.0.0.30819" +#define FILE_VER_STRING "WI-T3.0.0.30819" +#define LICENSE_VER_STRING "WI-T3.0.0.30819" +#define FILE_VER_NUMBER 3, 0, 0, 30819 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30815" +#define FB_BUILD_NO "30819" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-06 09:24:46 UTC (rev 59000) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-07 00:36:02 UTC (rev 59001) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30815 +BuildNum=30819 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-08 00:32:32
|
Revision: 59004 http://sourceforge.net/p/firebird/code/59004 Author: firebirds Date: 2014-01-08 00:32:29 +0000 (Wed, 08 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-07 15:59:15 UTC (rev 59003) +++ firebird/trunk/ChangeLog 2014-01-08 00:32:29 UTC (rev 59004) @@ -1,3 +1,7 @@ + 2014-01-07 01:15 asfernandes + M src/jrd/SysFunction.cpp +Improvement CORE-4310 - DateAdd(): change input <amount> argument from INT to BIGINT. + 2014-01-06 09:24 dimitr M src/jrd/Optimizer.cpp Fixed CORE-4118: Expression index may be not used for derived fields or view fields. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-07 15:59:15 UTC (rev 59003) +++ firebird/trunk/src/jrd/build_no.h 2014-01-08 00:32:29 UTC (rev 59004) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30819 + FORMAL BUILD NUMBER:30820 */ -#define PRODUCT_VER_STRING "3.0.0.30819" -#define FILE_VER_STRING "WI-T3.0.0.30819" -#define LICENSE_VER_STRING "WI-T3.0.0.30819" -#define FILE_VER_NUMBER 3, 0, 0, 30819 +#define PRODUCT_VER_STRING "3.0.0.30820" +#define FILE_VER_STRING "WI-T3.0.0.30820" +#define LICENSE_VER_STRING "WI-T3.0.0.30820" +#define FILE_VER_NUMBER 3, 0, 0, 30820 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30819" +#define FB_BUILD_NO "30820" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-07 15:59:15 UTC (rev 59003) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-08 00:32:29 UTC (rev 59004) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30819 +BuildNum=30820 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-10 00:54:19
|
Revision: 59013 http://sourceforge.net/p/firebird/code/59013 Author: firebirds Date: 2014-01-10 00:54:15 +0000 (Fri, 10 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-09 15:56:24 UTC (rev 59012) +++ firebird/trunk/ChangeLog 2014-01-10 00:54:15 UTC (rev 59013) @@ -1,3 +1,23 @@ + 2014-01-09 15:56 alexpeshkoff + M src/yvalve/why.cpp +Avoid incorrect error reporting when legacy BLOB cursor is closed + + 2014-01-09 15:52 alexpeshkoff + M src/jrd/ini.epp +Use correct blr code for boolean field + + 2014-01-09 15:42 asfernandes + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h +Fixed CORE-4307 - Fields present only in WHERE clause of views WITH CHECK OPTION causes invalid CHECK CONSTRAINT violation. + + 2014-01-09 10:29 hvlad + M src/jrd/req.h + M src/jrd/vio.cpp +Better (i hope) fix for the bugcheck appeared in test bugs.core_195. +The original fix broke cursor stability when there are sub-queries, see also CORE-3362. +Misc fixes for better debugging. + 2014-01-07 01:15 asfernandes M src/jrd/SysFunction.cpp Improvement CORE-4310 - DateAdd(): change input <amount> argument from INT to BIGINT. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-09 15:56:24 UTC (rev 59012) +++ firebird/trunk/src/jrd/build_no.h 2014-01-10 00:54:15 UTC (rev 59013) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30820 + FORMAL BUILD NUMBER:30824 */ -#define PRODUCT_VER_STRING "3.0.0.30820" -#define FILE_VER_STRING "WI-T3.0.0.30820" -#define LICENSE_VER_STRING "WI-T3.0.0.30820" -#define FILE_VER_NUMBER 3, 0, 0, 30820 +#define PRODUCT_VER_STRING "3.0.0.30824" +#define FILE_VER_STRING "WI-T3.0.0.30824" +#define LICENSE_VER_STRING "WI-T3.0.0.30824" +#define FILE_VER_NUMBER 3, 0, 0, 30824 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30820" +#define FB_BUILD_NO "30824" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-09 15:56:24 UTC (rev 59012) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-10 00:54:15 UTC (rev 59013) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30820 +BuildNum=30824 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-11 00:40:47
|
Revision: 59019 http://sourceforge.net/p/firebird/code/59019 Author: firebirds Date: 2014-01-11 00:40:41 +0000 (Sat, 11 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-10 09:53:32 UTC (rev 59018) +++ firebird/trunk/ChangeLog 2014-01-11 00:40:41 UTC (rev 59019) @@ -1,3 +1,28 @@ + 2014-01-10 08:03 dimitr + M src/jrd/idx.cpp + M src/jrd/recsrc/IndexTableScan.cpp +Misc. + + 2014-01-10 07:49 dimitr + M src/common/dsc.h + M src/dsql/StmtNodes.cpp + M src/include/gen/codetext.h + M src/include/gen/iberror.h + M src/include/gen/msgs.h + M src/include/gen/sql_code.h + M src/include/gen/sql_state.h + M src/jrd/btr.cpp + M src/jrd/btr.h + M src/jrd/err.cpp + M src/jrd/err_proto.h + M src/jrd/idx.cpp + M src/jrd/idx_proto.h + M src/jrd/recsrc/IndexTableScan.cpp + M src/msgs/facilities2.sql + M src/msgs/messages2.sql + M src/msgs/system_errors2.sql +Improvement CORE-3881: Extend the error reported for index/constraint violations to include the problematic key value. + 2014-01-09 15:56 alexpeshkoff M src/yvalve/why.cpp Avoid incorrect error reporting when legacy BLOB cursor is closed Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-10 09:53:32 UTC (rev 59018) +++ firebird/trunk/src/jrd/build_no.h 2014-01-11 00:40:41 UTC (rev 59019) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30824 + FORMAL BUILD NUMBER:30826 */ -#define PRODUCT_VER_STRING "3.0.0.30824" -#define FILE_VER_STRING "WI-T3.0.0.30824" -#define LICENSE_VER_STRING "WI-T3.0.0.30824" -#define FILE_VER_NUMBER 3, 0, 0, 30824 +#define PRODUCT_VER_STRING "3.0.0.30826" +#define FILE_VER_STRING "WI-T3.0.0.30826" +#define LICENSE_VER_STRING "WI-T3.0.0.30826" +#define FILE_VER_NUMBER 3, 0, 0, 30826 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30824" +#define FB_BUILD_NO "30826" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-10 09:53:32 UTC (rev 59018) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-11 00:40:41 UTC (rev 59019) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30824 +BuildNum=30826 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-12 00:35:25
|
Revision: 59027 http://sourceforge.net/p/firebird/code/59027 Author: firebirds Date: 2014-01-12 00:35:22 +0000 (Sun, 12 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-11 09:34:28 UTC (rev 59026) +++ firebird/trunk/ChangeLog 2014-01-12 00:35:22 UTC (rev 59027) @@ -1,3 +1,24 @@ + 2014-01-11 09:34 hvlad + M doc/README.monitoring_tables +Removed mention of ODS 11.x + + 2014-01-11 09:25 hvlad + M doc/README.monitoring_tables +Document new field MON$ATTACHMENTS.MON$SYSTEM_FLAG + + 2014-01-11 09:10 hvlad + M src/include/gen/ids.h + M src/jrd/Attachment.h + M src/jrd/DatabaseSnapshot.cpp + M src/jrd/VirtualTable.cpp + M src/jrd/jrd.cpp + M src/jrd/relations.h +Fixed bug CORE-4309 : 'Cache Writer' record in MON$ATTACHMENTS dissapear when delete other connection that running some 'heavy update' on big table via delete from MON$ATTACHMENTS + + 2014-01-11 08:54 dimitr + M src/jrd/btr.cpp +Better output for CHARs. + 2014-01-10 08:03 dimitr M src/jrd/idx.cpp M src/jrd/recsrc/IndexTableScan.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-11 09:34:28 UTC (rev 59026) +++ firebird/trunk/src/jrd/build_no.h 2014-01-12 00:35:22 UTC (rev 59027) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30826 + FORMAL BUILD NUMBER:30830 */ -#define PRODUCT_VER_STRING "3.0.0.30826" -#define FILE_VER_STRING "WI-T3.0.0.30826" -#define LICENSE_VER_STRING "WI-T3.0.0.30826" -#define FILE_VER_NUMBER 3, 0, 0, 30826 +#define PRODUCT_VER_STRING "3.0.0.30830" +#define FILE_VER_STRING "WI-T3.0.0.30830" +#define LICENSE_VER_STRING "WI-T3.0.0.30830" +#define FILE_VER_NUMBER 3, 0, 0, 30830 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30826" +#define FB_BUILD_NO "30830" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-11 09:34:28 UTC (rev 59026) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-12 00:35:22 UTC (rev 59027) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30826 +BuildNum=30830 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-14 00:56:39
|
Revision: 59034 http://sourceforge.net/p/firebird/code/59034 Author: firebirds Date: 2014-01-14 00:56:35 +0000 (Tue, 14 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-13 09:07:38 UTC (rev 59033) +++ firebird/trunk/ChangeLog 2014-01-14 00:56:35 UTC (rev 59034) @@ -1,3 +1,21 @@ + 2014-01-13 09:07 dimitr + M doc/README.monitoring_tables +Updated the README. + + 2014-01-13 07:58 dimitr + M doc/README.monitoring_tables +Updated the README. + + 2014-01-13 02:03 asfernandes + M lang_helpers/gds_codes.ftn + M lang_helpers/gds_codes.pas +Commit missing generated files. + + 2014-01-13 02:02 asfernandes + M src/jrd/VirtualTable.cpp + M src/jrd/idx.cpp +Misc. + 2014-01-11 09:34 hvlad M doc/README.monitoring_tables Removed mention of ODS 11.x Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-13 09:07:38 UTC (rev 59033) +++ firebird/trunk/src/jrd/build_no.h 2014-01-14 00:56:35 UTC (rev 59034) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30830 + FORMAL BUILD NUMBER:30834 */ -#define PRODUCT_VER_STRING "3.0.0.30830" -#define FILE_VER_STRING "WI-T3.0.0.30830" -#define LICENSE_VER_STRING "WI-T3.0.0.30830" -#define FILE_VER_NUMBER 3, 0, 0, 30830 +#define PRODUCT_VER_STRING "3.0.0.30834" +#define FILE_VER_STRING "WI-T3.0.0.30834" +#define LICENSE_VER_STRING "WI-T3.0.0.30834" +#define FILE_VER_NUMBER 3, 0, 0, 30834 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30830" +#define FB_BUILD_NO "30834" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-13 09:07:38 UTC (rev 59033) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-14 00:56:35 UTC (rev 59034) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30830 +BuildNum=30834 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-15 00:31:27
|
Revision: 59038 http://sourceforge.net/p/firebird/code/59038 Author: firebirds Date: 2014-01-15 00:31:23 +0000 (Wed, 15 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-14 15:03:22 UTC (rev 59037) +++ firebird/trunk/ChangeLog 2014-01-15 00:31:23 UTC (rev 59038) @@ -1,3 +1,17 @@ + 2014-01-14 15:03 asfernandes + M src/dsql/DdlNodes.epp + M src/dsql/ExprNodes.cpp + M src/dsql/dsql.h +Fixed CORE-4315 - Usage of field's alias in view WITH CHECK OPTION leads to incorrect compile error or incorrect internal triggers. + + 2014-01-14 10:41 dimitr + M src/remote/server/server.cpp +Correction. + + 2014-01-14 09:00 dimitr + M src/remote/server/server.cpp +Fixed the server crash during disconnection forced by the network layer. + 2014-01-13 09:07 dimitr M doc/README.monitoring_tables Updated the README. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-14 15:03:22 UTC (rev 59037) +++ firebird/trunk/src/jrd/build_no.h 2014-01-15 00:31:23 UTC (rev 59038) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30834 + FORMAL BUILD NUMBER:30837 */ -#define PRODUCT_VER_STRING "3.0.0.30834" -#define FILE_VER_STRING "WI-T3.0.0.30834" -#define LICENSE_VER_STRING "WI-T3.0.0.30834" -#define FILE_VER_NUMBER 3, 0, 0, 30834 +#define PRODUCT_VER_STRING "3.0.0.30837" +#define FILE_VER_STRING "WI-T3.0.0.30837" +#define LICENSE_VER_STRING "WI-T3.0.0.30837" +#define FILE_VER_NUMBER 3, 0, 0, 30837 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30834" +#define FB_BUILD_NO "30837" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-14 15:03:22 UTC (rev 59037) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-15 00:31:23 UTC (rev 59038) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30834 +BuildNum=30837 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ale...@us...> - 2014-01-15 13:02:14
|
Revision: 59039 http://sourceforge.net/p/firebird/code/59039 Author: alexpeshkoff Date: 2014-01-15 13:02:08 +0000 (Wed, 15 Jan 2014) Log Message: ----------- Implemented CORE-4317: Make ISQL use new object API with 32-bit length for object sizes (messages, SQL statements, etc.) Implementation also includes changes in GPRE, but this utility is not complete - only commands, used in ISQL, are working in code generator for new API. New interface IUtl is added - it performs tasks, related with database objects (attachment, transaction, etc.), but not requiring routing in YValve, i.e. client only tasks. Modified Paths: -------------- firebird/trunk/builds/posix/make.rules firebird/trunk/builds/posix/prefix.linux_amd64 firebird/trunk/src/auth/SecureRemotePassword/Message.h firebird/trunk/src/common/MsgMetadata.cpp firebird/trunk/src/common/MsgMetadata.h firebird/trunk/src/common/classes/ImplementHelper.h firebird/trunk/src/common/classes/TempFile.cpp firebird/trunk/src/common/classes/TempFile.h firebird/trunk/src/gpre/boot/gpre_meta_boot.cpp firebird/trunk/src/gpre/gpre.cpp firebird/trunk/src/gpre/gpreswi.h firebird/trunk/src/gpre/lang_proto.h firebird/trunk/src/include/firebird/Interface.h firebird/trunk/src/include/firebird/Provider.h firebird/trunk/src/isql/extract.epp firebird/trunk/src/isql/isql.epp firebird/trunk/src/isql/isql.h firebird/trunk/src/isql/isql_proto.h firebird/trunk/src/isql/show.epp firebird/trunk/src/isql/show_proto.h firebird/trunk/src/msgs/facilities2.sql firebird/trunk/src/msgs/messages2.sql firebird/trunk/src/remote/client/BlrFromMessage.cpp firebird/trunk/src/yvalve/MasterImplementation.cpp firebird/trunk/src/yvalve/MasterImplementation.h firebird/trunk/src/yvalve/perf.cpp firebird/trunk/src/yvalve/prepa_proto.h firebird/trunk/src/yvalve/preparse.cpp firebird/trunk/src/yvalve/utl.cpp firebird/trunk/src/yvalve/utl_proto.h firebird/trunk/src/yvalve/why.cpp firebird/trunk/src/yvalve/why_proto.h Added Paths: ----------- firebird/trunk/src/gpre/obj_cxx.cpp firebird/trunk/src/include/firebird/Utl.h Modified: firebird/trunk/builds/posix/make.rules =================================================================== --- firebird/trunk/builds/posix/make.rules 2014-01-15 00:31:23 UTC (rev 59038) +++ firebird/trunk/builds/posix/make.rules 2014-01-15 13:02:08 UTC (rev 59039) @@ -62,7 +62,7 @@ GPRE_FLAGS= -m -z -n JRD_GPRE_FLAGS = -n -z -gds_cxx -ids -DSQL_GPRE_FLAGS = -m -z -n +ISQL_GPRE_FLAGS = -m -z -n -ocxx .SUFFIXES: .c .e .epp .cpp @@ -74,12 +74,9 @@ $(OBJ)/jrd/%.cpp: $(SRC_ROOT)/jrd/%.epp $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $(firstword $<) $@ -$(OBJ)/dsql/%.cpp: $(SRC_ROOT)/dsql/%.epp - $(GPRE_CURRENT) $(DSQL_GPRE_FLAGS) $< $@ +$(OBJ)/isql/%.cpp: $(SRC_ROOT)/isql/%.epp + $(GPRE_CURRENT) $(ISQL_GPRE_FLAGS) $< $@ -$(OBJ)/yvalve/%.cpp: $(SRC_ROOT)/yvalve/%.epp - $(GPRE_CURRENT) $(DSQL_GPRE_FLAGS) $< $@ - $(OBJ)/%.cpp: $(SRC_ROOT)/%.epp $(GPRE_CURRENT) $(GPRE_FLAGS) $(firstword $<) $@ Modified: firebird/trunk/builds/posix/prefix.linux_amd64 =================================================================== --- firebird/trunk/builds/posix/prefix.linux_amd64 2014-01-15 00:31:23 UTC (rev 59038) +++ firebird/trunk/builds/posix/prefix.linux_amd64 2014-01-15 13:02:08 UTC (rev 59039) @@ -24,4 +24,4 @@ PROD_FLAGS=$(COMMON_FLAGS) $(OPTIMIZE_FLAGS) #DEV_FLAGS=-DUSE_VALGRIND $(COMMON_FLAGS) $(WARN_FLAGS) -DEV_FLAGS=$(COMMON_FLAGS) $(WARN_FLAGS) +DEV_FLAGS=$(COMMON_FLAGS) $(WARN_FLAGS) -fmax-errors=8 Modified: firebird/trunk/src/auth/SecureRemotePassword/Message.h =================================================================== --- firebird/trunk/src/auth/SecureRemotePassword/Message.h 2014-01-15 00:31:23 UTC (rev 59038) +++ firebird/trunk/src/auth/SecureRemotePassword/Message.h 2014-01-15 13:02:08 UTC (rev 59039) @@ -92,6 +92,7 @@ }; +// With template magic, we make the fields strongly-typed. template <> bool Message::checkType<SLONG>(unsigned t, unsigned sz) { @@ -105,13 +106,18 @@ } template <> +bool Message::checkType<ISC_INT64>(unsigned t, unsigned sz) +{ + return t == SQL_INT64 && sz == sizeof(ISC_INT64); +} + +template <> bool Message::checkType<FB_BOOLEAN>(unsigned t, unsigned sz) { return t == SQL_BOOLEAN && sz == sizeof(FB_BOOLEAN); } -// With template magic, we make the fields strongly-typed. template <typename T> class Field { Modified: firebird/trunk/src/common/MsgMetadata.cpp =================================================================== --- firebird/trunk/src/common/MsgMetadata.cpp 2014-01-15 00:31:23 UTC (rev 59038) +++ firebird/trunk/src/common/MsgMetadata.cpp 2014-01-15 13:02:08 UTC (rev 59039) @@ -81,7 +81,7 @@ } } - virtual void FB_CARG setSubType(IStatus* status, unsigned index, unsigned subType) + virtual void FB_CARG setSubType(IStatus* status, unsigned index, int subType) { try { @@ -162,6 +162,22 @@ } } + virtual void FB_CARG remove(IStatus* status, unsigned index) + { + try + { + MutexLockGuard g(mtx, FB_FUNCTION); + + indexError(index, "remove"); + + msgMetadata->items.remove(index); + } + catch (const Exception& ex) + { + ex.stuffException(status); + } + } + virtual void FB_CARG moveNameToIndex(IStatus* status, const char* name, unsigned index) { try Modified: firebird/trunk/src/common/MsgMetadata.h =================================================================== --- firebird/trunk/src/common/MsgMetadata.h 2014-01-15 00:31:23 UTC (rev 59038) +++ firebird/trunk/src/common/MsgMetadata.h 2014-01-15 13:02:08 UTC (rev 59039) @@ -79,7 +79,7 @@ string owner; string alias; unsigned type; - unsigned subType; + int subType; unsigned length; int scale; unsigned charSet; @@ -164,7 +164,7 @@ return false; } - virtual unsigned FB_CARG getSubType(IStatus* status, unsigned index) const + virtual int FB_CARG getSubType(IStatus* status, unsigned index) const { if (index < items.getCount()) return items[index].subType; Modified: firebird/trunk/src/common/classes/ImplementHelper.h =================================================================== --- firebird/trunk/src/common/classes/ImplementHelper.h 2014-01-15 00:31:23 UTC (rev 59038) +++ firebird/trunk/src/common/classes/ImplementHelper.h 2014-01-15 13:02:08 UTC (rev 59039) @@ -250,6 +250,16 @@ }; +// Misc utl access +class UtlInterfacePtr : public AccessAutoInterface<IUtl> +{ +public: + UtlInterfacePtr() + : AccessAutoInterface<IUtl>(getMasterInterface()->getUtlInterface()) + { } +}; + + // When process exits, dynamically loaded modules (for us plugin modules) // are unloaded first. As the result all global variables in plugin are already destroyed // when yvalve is starting fb_shutdown(). This causes almost unavoidable segfault. Modified: firebird/trunk/src/common/classes/TempFile.cpp =================================================================== --- firebird/trunk/src/common/classes/TempFile.cpp 2014-01-15 00:31:23 UTC (rev 59038) +++ firebird/trunk/src/common/classes/TempFile.cpp 2014-01-15 13:02:08 UTC (rev 59039) @@ -70,7 +70,7 @@ // we need a class here only to return memory on shutdown and avoid // false memory leak reports -static Firebird::InitInstance<ZeroBuffer> zeros; +static InitInstance<ZeroBuffer> zeros; // // TempFile::getTempPath @@ -127,6 +127,32 @@ } // +// TempFile::create +// +// Creates a temporary file and returns its name +// In error case store exception in status arg +// + +PathName TempFile::create(IStatus* status, const PathName& prefix, const PathName& directory) +{ + PathName filename; + + try { + TempFile file(*getDefaultMemoryPool(), prefix, directory, false); + filename = file.getName(); + } + catch (const Exception& ex) + { + if (status) + { + ex.stuffException(status); + } + } + + return filename; +} + +// // TempFile::init // // Creates temporary file with a unique filename Modified: firebird/trunk/src/common/classes/TempFile.h =================================================================== --- firebird/trunk/src/common/classes/TempFile.h 2014-01-15 00:31:23 UTC (rev 59038) +++ firebird/trunk/src/common/classes/TempFile.h 2014-01-15 13:02:08 UTC (rev 59039) @@ -29,6 +29,8 @@ namespace Firebird { +class IStatus; + class TempFile : public File { public: @@ -66,6 +68,7 @@ static PathName getTempPath(); static PathName create(const PathName& prefix, const PathName& directory = ""); + static PathName create(IStatus* status, const PathName& prefix, const PathName& directory = ""); private: void init(const PathName&, const PathName&); Modified: firebird/trunk/src/gpre/boot/gpre_meta_boot.cpp =================================================================== --- firebird/trunk/src/gpre/boot/gpre_meta_boot.cpp 2014-01-15 00:31:23 UTC (rev 59038) +++ firebird/trunk/src/gpre/boot/gpre_meta_boot.cpp 2014-01-15 13:02:08 UTC (rev 59039) @@ -765,6 +765,12 @@ { return -1; } + + virtual IUtl* FB_CARG getUtlInterface() + { + fb_assert(false); + return NULL; + } }; Modified: firebird/trunk/src/gpre/gpre.cpp =================================================================== --- firebird/trunk/src/gpre/gpre.cpp 2014-01-15 00:31:23 UTC (rev 59038) +++ firebird/trunk/src/gpre/gpre.cpp 2014-01-15 13:02:08 UTC (rev 59039) @@ -468,6 +468,18 @@ gpreGlob.database_name = "gds_database"; break; + case IN_SW_GPRE_OCXX: + gen_routine = OBJ_CXX_action; + gpreGlob.sw_language = lang_cxx; + gpreGlob.ident_pattern = "fb_%d"; + gpreGlob.long_ident_pattern = "fb_%ld"; + gpreGlob.utility_name = "fbUtility"; + gpreGlob.count_name = "fbCount"; + gpreGlob.slack_name = "fbSlack"; + gpreGlob.transaction_name = "fbTrans"; + gpreGlob.database_name = "fbDatabase"; + break; + case IN_SW_GPRE_D: // allocate database block and link to db chain Modified: firebird/trunk/src/gpre/gpreswi.h =================================================================== --- firebird/trunk/src/gpre/gpreswi.h 2014-01-15 00:31:23 UTC (rev 59038) +++ firebird/trunk/src/gpre/gpreswi.h 2014-01-15 13:02:08 UTC (rev 59039) @@ -74,6 +74,7 @@ IN_SW_GPRE_D_FLOAT, // use blr_d_float for doubles IN_SW_GPRE_CXX, // source is C++ IN_SW_GPRE_SCXX, // source is C++ with Saber extension + IN_SW_GPRE_OCXX, // c++ with object API IN_SW_GPRE_SQLDA, // use old or new SQLDA IN_SW_GPRE_USER, // default username to use when attaching database IN_SW_GPRE_PASSWORD, // default password to use in attaching database @@ -167,6 +168,7 @@ {IN_SW_GPRE_M , 0, "MANUAL" , 0, 0, 0, false, 0, 0, "\t\tdo not automatically ATTACH to a database"}, {IN_SW_GPRE_N , 0, "NO_LINES" , 0, 0, 0, false, 0, 0, "\tdo not generate C debug lines"}, {IN_SW_GPRE_O , 0, "OUTPUT" , 0, 0, 0, false, 0, 0, "\t\tsend output to standard out"}, + {IN_SW_GPRE_OCXX , 0, "OCXX" , 0, 0, 0, false, 0, 0, "\t\textended C++ program with objects API"}, #ifdef GPRE_PASCAL {IN_SW_GPRE_P , 0, "PASCAL" , 0, 0, 0, false, 0, 0, "\t\textended PASCAL program"}, #endif Modified: firebird/trunk/src/gpre/lang_proto.h =================================================================== --- firebird/trunk/src/gpre/lang_proto.h 2014-01-15 00:31:23 UTC (rev 59038) +++ firebird/trunk/src/gpre/lang_proto.h 2014-01-15 13:02:08 UTC (rev 59039) @@ -38,6 +38,7 @@ void FTN_print_buffer(TEXT*); void INT_action(const act*, int); void INT_CXX_action(const act*, int); +void OBJ_CXX_action(const act*, int); void PAS_action(const act*, int); //int PLI_action(ACT, int); void RMC_action(const act*, int); Added: firebird/trunk/src/gpre/obj_cxx.cpp =================================================================== --- firebird/trunk/src/gpre/obj_cxx.cpp (rev 0) +++ firebird/trunk/src/gpre/obj_cxx.cpp 2014-01-15 13:02:08 UTC (rev 59039) @@ -0,0 +1,3975 @@ +//____________________________________________________________ +// +// PROGRAM: C preprocess +// MODULE: c_cxx.cpp +// DESCRIPTION: C and C++ code generator +// +// The contents of this file are subject to the Interbase Public +// License Version 1.0 (the "License"); you may not use this file +// except in compliance with the License. You may obtain a copy +// of the License at http://www.Inprise.com/IPL.html +// +// Software distributed under the License is distributed on an +// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express +// or implied. See the License for the specific language governing +// rights and limitations under the License. +// +// The Original Code was created by Inprise Corporation +// and its predecessors. Portions created by Inprise Corporation are +// Copyright (C) Inprise Corporation. +// +// All Rights Reserved. +// Contributor(s): ______________________________________.16/09/2003 +// TMN (Mike Nordell) 11.APR.2001 - Reduce compiler warnings +// +// 2002.10.28 Sean Leyne - Code cleanup, removed obsolete "DecOSF" port +// +// +//____________________________________________________________ +// +// + +#include "firebird.h" +#include <stdio.h> +#include <string.h> +#include <stdarg.h> +#include "../jrd/ibase.h" +#include "../gpre/gpre.h" +#include "../gpre/pat.h" +#include "../gpre/msc_proto.h" +#include "../gpre/cmp_proto.h" +#include "../gpre/gpre_proto.h" +#include "../gpre/lang_proto.h" +#include "../gpre/pat_proto.h" +#include "../common/prett_proto.h" +#include "../yvalve/gds_proto.h" +#include "../common/utils_proto.h" + + +static void align(int); +static void asgn_from(const act*, ref*, int); +static void asgn_to(const act*, ref*, int); +static void asgn_to_proc(const ref*, int); +static void gen_any(const act*, int); +static void gen_at_end(const act*, int); +static void gen_based(const act*, int); +static void gen_blob_close(const act*, USHORT); +static void gen_blob_end(const act*, USHORT); +static void gen_blob_for(const act*, USHORT); +static void gen_blob_open(const act*, USHORT); +static void gen_blr(void*, SSHORT, const char*); +static void gen_clear_handles(int); +//static void gen_compatibility_symbol(const TEXT*, const TEXT*, const TEXT*); +static void gen_compile(const act*, int); +static void gen_create_database(const act*, int); +static int gen_cursor_close(const act*, const gpre_req*, int); +static void gen_cursor_init(const act*, int); +static int gen_cursor_open(const act*, const gpre_req*, int); +static void gen_database(int); +static void gen_ddl(const act*, int); +static void gen_drop_database(const act*, int); +static void gen_dyn_close(const act*, int); +static void gen_dyn_declare(const act*, int); +static void gen_dyn_describe(const act*, int, bool); +static void gen_dyn_execute(const act*, int); +static void gen_dyn_fetch(const act*, int); +static void gen_dyn_immediate(const act*, int); +static void gen_dyn_insert(const act*, int); +static void gen_dyn_open(const act*, int); +static void gen_dyn_prepare(const act*, int); +static void gen_emodify(const act*, int); +static void gen_estore(const act*, int); +static void gen_endfor(const act*, int); +static void gen_erase(const act*, int); +static SSHORT gen_event_block(act*); +static void gen_event_init(const act*, int); +static void gen_event_wait(const act*, int); +static void gen_fetch(const act*, int); +static void gen_finish(const act*, int); +static void gen_for(const act*, int); +static void gen_function(const act*, int); +static void gen_get_or_put_slice(const act*, const ref*, bool, int); +static void gen_get_segment(const act*, int); +static void gen_loop(const act*, int); +static TEXT* gen_name(char* const, const ref*, bool); +static void gen_on_error(const act*, USHORT); +static void gen_procedure(const act*, int); +static void gen_put_segment(const act*, int); +static void gen_raw(const UCHAR*, int); +static void gen_ready(const act*, int); +static void gen_receive(const act*, int, const gpre_port*); +static void gen_release(const act*, int); +static void gen_request(const gpre_req*); +static void gen_return_value(const act*, int); +static void gen_routine(const act*, int); +static void gen_s_end(const act*, int); +static void gen_s_fetch(const act*, int); +static void gen_s_start(const act*, int); +static void gen_segment(const act*, int); +static void gen_select(const act*, int); +static void gen_send(const act*, const gpre_port*, int); +static void gen_slice(const act*, const ref*, int); +static void gen_start(const act*, const gpre_port*, int, bool); +static void gen_store(const act*, int); +static void gen_t_start(const act*, int); +static void gen_tpb(const tpb*, int); +static void gen_trans(const act*, int); +static void gen_type(const act*, int); +static void gen_update(const act*, int); +static void gen_variable(const act*, int); +static void gen_whenever(const swe*, int); +static void make_array_declaration(ref*); +static TEXT* make_name(TEXT* const, const gpre_sym*); +static void make_ok_test(const act*, const gpre_req*, int); +static void make_port(const gpre_port*, int); +static void make_ready(const gpre_dbb*, const TEXT*, const TEXT*, USHORT, const gpre_req*); +static void printa(int, const char*, ...) ATTRIBUTE_FORMAT(2,3); +static void printb(const TEXT*, ...) ATTRIBUTE_FORMAT(1,2); +static const TEXT* request_trans(const act*, const gpre_req*); +static const TEXT* status_vector(const act*); +static void t_start_auto(const act*, const gpre_req*, const TEXT*, int, bool); + +static bool global_first_flag = false; +static const TEXT* global_status_name = 0; + +const int INDENT = 3; + +static const char* const NULL_STRING = "NULL"; +static const char* const NULL_STATUS = "NULL"; +static const char* const NULL_SQLDA = "NULL"; + +#ifdef DARWIN +static const char* const GDS_INCLUDE = "<Firebird/ibase.h>"; +#else +static const char* const GDS_INCLUDE = "<ibase.h>"; +#endif + +static const char* const DCL_LONG = "ISC_LONG"; +static const char* const DCL_QUAD = "ISC_QUAD"; + +static inline void begin(const int column) +{ + printa(column, "{"); +} + +static inline void endp(const int column) +{ + printa(column, "}"); +} + +static inline void set_sqlcode(const act* action, const int column) +{ + if (action->act_flags & ACT_sql) + printa(column, "SQLCODE = isc_sqlcode(%s->get());", global_status_name); +} + +static inline void ObjectNotImplemented() +{ + CPR_error("Feature is not implemented for object API"); + throw Firebird::LongJump(); +} + +//____________________________________________________________ +// +// + +void OBJ_CXX_action(const act* action, int column) +{ + + global_status_name = "fbStatus"; + + // Put leading braces where required + + switch (action->act_type) + { + case ACT_alter_database: + case ACT_alter_domain: + case ACT_alter_index: + case ACT_alter_table: + case ACT_blob_close: + case ACT_blob_create: + case ACT_blob_for: + case ACT_blob_open: + case ACT_clear_handles: + case ACT_close: + case ACT_commit: + case ACT_commit_retain_context: + case ACT_create_database: + case ACT_create_domain: + case ACT_create_generator: + case ACT_create_index: + case ACT_create_shadow: + case ACT_create_table: + case ACT_create_view: + case ACT_declare_filter: + case ACT_declare_udf: + case ACT_disconnect: + case ACT_drop_database: + case ACT_drop_domain: + case ACT_drop_filter: + case ACT_drop_index: + case ACT_drop_shadow: + case ACT_drop_table: + case ACT_drop_udf: + case ACT_drop_view: + case ACT_dyn_close: + case ACT_dyn_cursor: + case ACT_dyn_describe: + case ACT_dyn_describe_input: + case ACT_dyn_execute: + case ACT_dyn_fetch: + case ACT_dyn_grant: + case ACT_dyn_immediate: + case ACT_dyn_insert: + case ACT_dyn_open: + case ACT_dyn_prepare: + case ACT_dyn_revoke: + case ACT_fetch: + case ACT_finish: + case ACT_for: + case ACT_get_segment: + case ACT_get_slice: + case ACT_insert: + case ACT_loop: + case ACT_modify: + case ACT_open: + case ACT_prepare: + case ACT_procedure: + case ACT_put_slice: + case ACT_ready: + case ACT_release: + case ACT_rfinish: + case ACT_rollback: + case ACT_rollback_retain_context: + case ACT_s_fetch: + case ACT_s_start: + case ACT_select: + case ACT_store: + case ACT_start: + case ACT_update: + case ACT_statistics: + begin(column); + } + + switch (action->act_type) + { + case ACT_alter_database: + case ACT_alter_domain: + case ACT_alter_index: + case ACT_alter_table: + gen_ddl(action, column); + break; + case ACT_any: + gen_any(action, column); + return; + case ACT_at_end: + gen_at_end(action, column); + return; + case ACT_b_declare: + gen_database(column); + gen_routine(action, column); + return; + case ACT_basedon: + gen_based(action, column); + return; + case ACT_blob_cancel: + gen_blob_close(action, (USHORT) column); + return; + case ACT_blob_close: + gen_blob_close(action, (USHORT) column); + break; + case ACT_blob_create: + gen_blob_open(action, (USHORT) column); + break; + case ACT_blob_for: + gen_blob_for(action, (USHORT) column); + return; + case ACT_blob_handle: + gen_segment(action, column); + return; + case ACT_blob_open: + gen_blob_open(action, (USHORT) column); + break; + case ACT_clear_handles: + gen_clear_handles(column); + break; + case ACT_close: + gen_s_end(action, column); + break; + case ACT_commit: + gen_trans(action, column); + break; + case ACT_commit_retain_context: + gen_trans(action, column); + break; + case ACT_create_database: + gen_create_database(action, column); + break; + case ACT_create_domain: + case ACT_create_generator: + case ACT_create_index: + case ACT_create_shadow: + case ACT_create_table: + case ACT_create_view: + gen_ddl(action, column); + break; + case ACT_cursor: + gen_cursor_init(action, column); + return; + case ACT_database: + gen_database(column); + return; + case ACT_declare_filter: + case ACT_declare_udf: + gen_ddl(action, column); + break; + case ACT_disconnect: + gen_finish(action, column); + break; + case ACT_drop_database: + gen_drop_database(action, column); + break; + case ACT_drop_domain: + case ACT_drop_filter: + case ACT_drop_index: + case ACT_drop_shadow: + case ACT_drop_table: + case ACT_drop_udf: + case ACT_drop_view: + gen_ddl(action, column); + break; + case ACT_dyn_close: + gen_dyn_close(action, column); + break; + case ACT_dyn_cursor: + gen_dyn_declare(action, column); + break; + case ACT_dyn_describe: + gen_dyn_describe(action, column, false); + break; + case ACT_dyn_describe_input: + gen_dyn_describe(action, column, true); + break; + case ACT_dyn_execute: + gen_dyn_execute(action, column); + break; + case ACT_dyn_fetch: + gen_dyn_fetch(action, column); + break; + case ACT_dyn_grant: + gen_ddl(action, column); + break; + case ACT_dyn_immediate: + gen_dyn_immediate(action, column); + break; + case ACT_dyn_insert: + gen_dyn_insert(action, column); + break; + case ACT_dyn_open: + gen_dyn_open(action, column); + break; + case ACT_dyn_prepare: + gen_dyn_prepare(action, column); + break; + case ACT_dyn_revoke: + gen_ddl(action, column); + break; + case ACT_endblob: + gen_blob_end(action, (USHORT) column); + return; + case ACT_enderror: + column += INDENT; + endp(column); + column -= INDENT; + break; + case ACT_endfor: + gen_endfor(action, column); + break; + case ACT_endmodify: + gen_emodify(action, column); + break; + case ACT_endstore: + gen_estore(action, column); + break; + case ACT_erase: + gen_erase(action, column); + return; + case ACT_event_init: + gen_event_init(action, column); + break; + case ACT_event_wait: + gen_event_wait(action, column); + break; + case ACT_fetch: + gen_fetch(action, column); + break; + case ACT_finish: + gen_finish(action, column); + break; + case ACT_for: + gen_for(action, column); + return; + case ACT_function: + gen_function(action, column); + return; + case ACT_get_segment: + gen_get_segment(action, column); + break; + case ACT_get_slice: + gen_slice(action, 0, column); + break; + case ACT_hctef: + endp(column); + break; + case ACT_insert: + gen_s_start(action, column); + break; + case ACT_loop: + gen_loop(action, column); + break; + case ACT_on_error: + gen_on_error(action, (USHORT) column); + return; + case ACT_open: + gen_s_start(action, column); + break; + case ACT_prepare: + gen_trans(action, column); + break; + case ACT_procedure: + gen_procedure(action, column); + break; + case ACT_put_segment: + gen_put_segment(action, column); + break; + case ACT_put_slice: + gen_slice(action, 0, column); + break; + case ACT_ready: + gen_ready(action, column); + break; + case ACT_release: + gen_release(action, column); + break; + case ACT_rfinish: + gen_finish(action, column); + break; + case ACT_rollback: + gen_trans(action, column); + break; + case ACT_rollback_retain_context: + gen_trans(action, column); + break; + case ACT_routine: + gen_routine(action, column); + return; + case ACT_s_end: + gen_s_end(action, column); + return; + case ACT_s_fetch: + gen_s_fetch(action, column); + return; + case ACT_s_start: + gen_s_start(action, column); + break; + case ACT_segment: + gen_segment(action, column); + return; + case ACT_segment_length: + gen_segment(action, column); + return; + case ACT_select: + gen_select(action, column); + break; + case ACT_sql_dialect: + gpreGlob.sw_sql_dialect = ((set_dialect*) action->act_object)->sdt_dialect; + return; + case ACT_start: + gen_t_start(action, column); + break; + case ACT_statistics: + gen_ddl(action, column); + break; + case ACT_store: + gen_store(action, column); + return; + case ACT_store2: + gen_return_value(action, column); + return; + case ACT_type_number: + gen_type(action, column); + return; + case ACT_update: + gen_update(action, column); + break; + case ACT_variable: + gen_variable(action, column); + return; + default: + return; + } + + // Put in a trailing brace for those actions still with us + + if (action->act_flags & ACT_sql) + gen_whenever(action->act_whenever, column); + + if (action->act_error) + fprintf(gpreGlob.out_file, ";"); + else + endp(column); +} + + +//____________________________________________________________ +// +// Align output to a specific column for output. If the +// column is negative, don't do anything. +// + +static void align( int column) +{ + if (column < 0) + return; + + putc('\n', gpreGlob.out_file); + + for (int i = column / 8; i; --i) + putc('\t', gpreGlob.out_file); + + for (int i = column % 8; i; --i) + putc(' ', gpreGlob.out_file); +} + + +//____________________________________________________________ +// +// Build an assignment from a host language variable to +// a port variable. The string assignments are a little +// hairy because the normal mode is varying (null +// terminated) strings, but the fixed subtype makes the +// string a byte stream. Furthering the complication, a +// single character byte stream is handled as a single byte, +// meaining that it is the byte, not the address of the +// byte. +// + +static void asgn_from( const act* action, ref* reference, int column) +{ + TEXT name[MAX_REF_SIZE], variable[MAX_REF_SIZE], temp[MAX_REF_SIZE]; + + for (; reference; reference = reference->ref_next) + { + bool slice_flag = false; + const gpre_fld* field = reference->ref_field; + if (field->fld_array_info) + { + act* slice_action; + ref* source = reference->ref_friend; + if (source && (slice_action = (act*) source->ref_slice) && slice_action->act_object) + { + slice_flag = true; + slice_action->act_type = ACT_put_slice; + gen_slice(slice_action, 0, column); + } + else if (!(reference->ref_flags & REF_array_elem)) + { + printa(column, "%s = fbBlobNull;", gen_name(name, reference, true)); + gen_get_or_put_slice(action, reference, false, column); + continue; + } + } + if (!reference->ref_source && !reference->ref_value && !slice_flag) + continue; + align(column); + gen_name(variable, reference, true); + const TEXT* value; + if (slice_flag) + value = gen_name(temp, reference->ref_friend, true); + else if (reference->ref_source) + value = gen_name(temp, reference->ref_source, true); + else + value = reference->ref_value; + + if (!slice_flag && reference->ref_value && (reference->ref_flags & REF_array_elem)) + { + field = field->fld_array; + } + if (field && field->fld_dtype <= dtype_cstring) + { + if (field->fld_sub_type == 1) + if (field->fld_length == 1) + fprintf(gpreGlob.out_file, "%s = %s;", variable, value); + else + fprintf(gpreGlob.out_file, "isc_ftof (%s, sizeof(%s), %s, %d);", value, + value, variable, field->fld_length); + else if (field->fld_flags & FLD_dbkey) + fprintf(gpreGlob.out_file, "isc_ftof (%s, %d, %s, %d);", value, + field->fld_length, variable, field->fld_length); + else if (gpreGlob.sw_cstring) + fprintf(gpreGlob.out_file, isLangCpp(gpreGlob.sw_language) ? + "isc_vtov ((const char*) %s, (char*) %s, %d);" : + "isc_vtov ((char*) %s, (char*) %s, %d);", + value, variable, field->fld_length); + else if (reference->ref_source) + fprintf(gpreGlob.out_file, "isc_ftof (%s, sizeof(%s), %s, %d);", + value, value, variable, field->fld_length); + else + fprintf(gpreGlob.out_file, "isc_vtof (%s, %s, %d);", + value, variable, field->fld_length); + } + else if (!reference->ref_master || (reference->ref_flags & REF_literal)) + { + fprintf(gpreGlob.out_file, "%s = %s;", variable, value); + } + else + { + fprintf(gpreGlob.out_file, "if (%s < 0)", value); + align(column + 4); + fprintf(gpreGlob.out_file, "%s = -1;", variable); + align(column); + fprintf(gpreGlob.out_file, "else"); + align(column + 4); + fprintf(gpreGlob.out_file, "%s = 0;", variable); + } + } +} + +//____________________________________________________________ +// +// Build an assignment to a host language variable from +// a port variable. +// + +static void asgn_to( const act* action, ref* reference, int column) +{ + char s[MAX_REF_SIZE]; + + ref* source = reference->ref_friend; + const gpre_fld* field = source->ref_field; + + if (field) + { + act* slice_action; + if (field->fld_array_info && (slice_action = (act*) source->ref_slice)) + { + source->ref_value = reference->ref_value; + if (slice_action->act_object) + { + slice_action->act_type = ACT_get_slice; + gen_slice(slice_action, source, column); + } + else + gen_get_or_put_slice(action, source, true, column); + + // Pick up NULL value if one is there + + if (reference = reference->ref_null) + { + align(column); + fprintf(gpreGlob.out_file, "%s = %s;", reference->ref_value, + gen_name(s, reference, true)); + } + return; + } + + gen_name(s, source, true); + if (field->fld_dtype > dtype_cstring) + fprintf(gpreGlob.out_file, "%s = %s;", reference->ref_value, s); + else if (field->fld_sub_type == 1 && field->fld_length == 1) + fprintf(gpreGlob.out_file, "%s = %s;", reference->ref_value, s); + else if (field->fld_flags & FLD_dbkey) + fprintf(gpreGlob.out_file, "isc_ftof (%s, %d, %s, %d);", + s, field->fld_length, reference->ref_value, field->fld_length); + else if (!gpreGlob.sw_cstring || field->fld_sub_type == 1) + fprintf(gpreGlob.out_file, "isc_ftof (%s, %d, %s, sizeof(%s));", + s, field->fld_length, reference->ref_value, reference->ref_value); + else + fprintf(gpreGlob.out_file, isLangCpp(gpreGlob.sw_language) ? + "isc_vtov ((const char*) %s, (char*) %s, sizeof(%s));" : + "isc_vtov ((char*) %s, (char*) %s, sizeof(%s));", + s, reference->ref_value, reference->ref_value); + } + + // Pick up NULL value if one is there + + if (reference = reference->ref_null) + { + align(column); + fprintf(gpreGlob.out_file, "%s = %s;", reference->ref_value, gen_name(s, reference, true)); + } +} + + +//____________________________________________________________ +// +// Build an assignment to a host language variable from +// a port variable. +// + +static void asgn_to_proc(const ref* reference, int column) +{ + char s[MAX_REF_SIZE]; + + for (; reference; reference = reference->ref_next) + { + if (!reference->ref_value) + continue; + const gpre_fld* field = reference->ref_field; + gen_name(s, reference, true); + align(column); + + if (field->fld_dtype > dtype_cstring) + fprintf(gpreGlob.out_file, "%s = %s;", reference->ref_value, s); + else if (field->fld_sub_type == 1 && field->fld_length == 1) + fprintf(gpreGlob.out_file, "%s = %s;", reference->ref_value, s); + else if (field->fld_flags & FLD_dbkey) + fprintf(gpreGlob.out_file, "isc_ftof (%s, %d, %s, %d);", + s, field->fld_length, reference->ref_value, field->fld_length); + else if (!gpreGlob.sw_cstring || field->fld_sub_type == 1) + fprintf(gpreGlob.out_file, "isc_ftof (%s, %d, %s, sizeof(%s));", + s, field->fld_length, reference->ref_value, reference->ref_value); + else + fprintf(gpreGlob.out_file, isLangCpp(gpreGlob.sw_language) ? + "isc_vtov ((const char*) %s, (char*) %s, sizeof(%s));" : + "isc_vtov ((char*) %s, (char*) %s, sizeof(%s));", + s, reference->ref_value, reference->ref_value); + } +} + + +//____________________________________________________________ +// +// Generate a function call for free standing ANY. Somebody else +// will need to generate the actual function. +// + +static void gen_any( const act* action, int column) +{ + align(column); + gpre_req* request = action->act_request; + + fprintf(gpreGlob.out_file, "%s_r (&%s, &%s", + request->req_handle, request->req_handle, request->req_trans); + + gpre_port* port = request->req_vport; + if (port) + for (ref* reference = port->por_references; reference; reference = reference->ref_next) + { + fprintf(gpreGlob.out_file, ", %s", reference->ref_value); + } + + fprintf(gpreGlob.out_file, ")"); +} + + +//____________________________________________________________ +// +// Generate code for AT END clause of FETCH. +// + +static void gen_at_end( const act* action, int column) +{ + char s[MAX_REF_SIZE]; + + const gpre_req* request = action->act_request; + printa(column, "if (!%s) {", gen_name(s, request->req_eof, true)); +} + + +//____________________________________________________________ +// +// Substitute for a BASED ON <field name> clause. +// + +static void gen_based( const act* action, int column) +{ + USHORT datatype; + SLONG length = -1; + + align(column); + bas* based_on = (bas*) action->act_object; + const gpre_fld* field = based_on->bas_field; + + if (based_on->bas_flags & BAS_segment) + { + datatype = gpreGlob.sw_cstring ? dtype_cstring : dtype_text; + if (!(length = field->fld_seg_length)) + length = 256; + if (datatype == dtype_cstring) + length++; + } + else if (field->fld_array_info) + datatype = field->fld_array_info->ary_dtype; + else + datatype = field->fld_dtype; + + switch (datatype) + { + case dtype_short: + fprintf(gpreGlob.out_file, "short"); + break; + + case dtype_long: + fprintf(gpreGlob.out_file, DCL_LONG); + break; + + case dtype_quad: + fprintf(gpreGlob.out_file, DCL_QUAD); + break; + + // Begin date/time/timestamp + case dtype_sql_date: + fprintf(gpreGlob.out_file, "ISC_DATE"); + break; + + case dtype_sql_time: + fprintf(gpreGlob.out_file, "ISC_TIME"); + break; + + case dtype_timestamp: + fprintf(gpreGlob.out_file, "ISC_TIMESTAMP"); + break; + // End date/time/timestamp + + case dtype_int64: + fprintf(gpreGlob.out_file, "ISC_INT64"); + break; + + case dtype_blob: + fprintf(gpreGlob.out_file, "ISC_QUAD"); + break; + + case dtype_cstring: + case dtype_text: + case dtype_varying: + fprintf(gpreGlob.out_file, "char"); + break; + + case dtype_real: + fprintf(gpreGlob.out_file, "float"); + break; + + case dtype_double: + fprintf(gpreGlob.out_file, "double"); + break; + + default: + { + TEXT s[MAX_CURSOR_SIZE]; + sprintf(s, "datatype %d unknown\n", field->fld_dtype); + CPR_error(s); + return; + } + } + + // print the first variable, then precede the rest with commas + + column += INDENT; + + // Notice this variable was named first_flag, same than the global variable. + bool first = true; + + while (based_on->bas_variables) + { + const TEXT* variable = (TEXT*) MSC_pop(&based_on->bas_variables); + if (!first) + fprintf(gpreGlob.out_file, ","); + first = false; + align(column); + fprintf(gpreGlob.out_file, "%s", variable); + if (based_on->bas_flags & BAS_segment) + { + if (*variable != '*') + fprintf(gpreGlob.out_file, "[%"SLONGFORMAT"]", length); + } + else if (field->fld_array_info) + { + // Print out the dimension part of the declaration + + for (const dim* dimension = field->fld_array_info->ary_dimension; + dimension; dimension = dimension->dim_next) + { + fprintf(gpreGlob.out_file, " [%"SLONGFORMAT"]", dimension->dim_upper - dimension->dim_lower + 1); + } + + if (field->fld_array_info->ary_dtype <= dtype_varying && field->fld_length > 1) + { + fprintf(gpreGlob.out_file, " [%d]", field->fld_array->fld_length); + } + } + else + if (*variable != '*' && field->fld_dtype <= dtype_varying && + (field->fld_sub_type != 1 || field->fld_length > 1)) + { + // *??????? + //if (*variable != '*' && field->fld_dtype <= dtype_varying && + // field->fld_length > 1) + // + fprintf(gpreGlob.out_file, "[%d]", field->fld_length); + } + } + + fprintf(gpreGlob.out_file, "%s\n", based_on->bas_terminator); +} + + +//____________________________________________________________ +// +// Make a blob FOR loop. +// + +static void gen_blob_close( const act* action, USHORT column) +{ + const TEXT* pattern1 = "fb_%IFcancel%ELclose%EN_blob (%V1, &%BH);"; + + if (action->act_error) + begin(column); + + const blb* blob; + if (action->act_flags & ACT_sql) + { + column = gen_cursor_close(action, action->act_request, column); + blob = (blb*) action->act_request->req_blobs; + } + else + blob = (blb*) action->act_object; + + PAT args; + args.pat_blob = blob; + args.pat_vector1 = status_vector(action); + args.pat_condition = (action->act_type == ACT_blob_cancel); + PATTERN_expand(column, pattern1, &args); + + if (action->act_flags & ACT_sql) + { + endp(column); + column -= INDENT; + } + + set_sqlcode(action, column); +} + + +//____________________________________________________________ +// +// End a blob FOR loop. +// + +static void gen_blob_end( const act* action, USHORT column) +{ + PAT args; + TEXT s1[32]; + const TEXT* pattern1 = "}\n\ +&%BH->close(%V1);\n\ +}"; + + args.pat_blob = (const blb*) action->act_object; + if (action->act_error) + { + sprintf(s1, "%s2", global_status_name); + args.pat_vector1 = s1; + } + else + args.pat_vector1 = status_vector(0); + args.pat_condition = (action->act_type == ACT_blob_cancel); + PATTERN_expand(column, pattern1, &args); +} + + +//____________________________________________________________ +// +// Make a blob FOR loop. +// + +static void gen_blob_for( const act* action, USHORT column) +{ + PAT args; + const TEXT* pattern1 = "%IFif (%S1->isSuccess()) {\n\ +%ENwhile (1)\n\ + {"; + + gen_blob_open(action, column); + args.pat_condition = (action->act_error != NULL); + args.pat_string1 = global_status_name; + PATTERN_expand(column, pattern1, &args); + column += INDENT; + gen_get_segment(action, column); + printa(column, "if ((!%s->isSuccess()) && (%s->get()[1] != isc_segment)) break;", + global_status_name, global_status_name); +} + + +//____________________________________________________________ +// +// Generate the call to open (or create) a blob. +// + +static void gen_blob_open( const act* action, USHORT column) +{ + const TEXT* pattern1 = + "%BH = %DH->%IFcreate%ELopen%ENBlob (%V1, %RT, %FR, %N1, %I1);"; + const TEXT* pattern2 = + "%BH = %DH->%IFcreate%ELopen%ENBlob (%V1, %RT, %FR);"; + + if (gpreGlob.sw_auto && (action->act_flags & ACT_sql)) + { + t_start_auto(action, action->act_request, status_vector(action), column, true); + printa(column, "if (%s)", request_trans(action, action->act_request)); + column += INDENT; + } + + if ((action->act_error && (action->act_type != ACT_blob_for)) || (action->act_flags & ACT_sql)) + { + begin(column); + } + + TEXT s[MAX_REF_SIZE]; + const blb* blob; + const ref* reference; + if (action->act_flags & ACT_sql) + { + column = gen_cursor_open(action, action->act_request, column); + blob = (blb*) action->act_request->req_blobs; + reference = ((const open_cursor*) action->act_object)->opn_using; + gen_name(s, reference, true); + } + else + { + blob = (blb*) action->act_object; + reference = blob->blb_reference; + } + + PAT args; + args.pat_condition = (action->act_type == ACT_blob_create); // open or create blob + args.pat_vector1 = status_vector(action); // status vector + args.pat_database = blob->blb_request->req_database; // database handle + args.pat_request = blob->blb_request; // transaction handle + args.pat_blob = blob; // blob handle + args.pat_reference = reference; // blob identifier + args.pat_ident1 = blob->blb_bpb_ident; + + if ((action->act_flags & ACT_sql) && action->act_type == ACT_blob_open) + { + align(column); + fprintf(gpreGlob.out_file, "%s = %s;", s, reference->ref_value); + } + + if (args.pat_value1 = blob->blb_bpb_length) + PATTERN_expand(column, pattern1, &args); + else + PATTERN_expand(column, pattern2, &args); + + if (action->act_flags & ACT_sql) + { + endp(column); + column -= INDENT; + endp(column); + column -= INDENT; + endp(column); + if (gpreGlob.sw_auto) + column -= INDENT; + set_sqlcode(action, column); + if (action->act_type == ACT_blob_create) + { + printa(column, "if (!SQLCODE)"); + align(column + INDENT); + fprintf(gpreGlob.out_file, "%s = %s;", reference->ref_value, s); + } + } + else if ((action->act_error && (action->act_type != ACT_blob_for))) + endp(column); +} + + +//____________________________________________________________ +// +// Callback routine for BLR pretty printer. +// + +static void gen_blr(void* /*user_arg*/, SSHORT /*offset*/, const char* string) +{ + char line[256]; + + int indent = 2 * INDENT; + const char* p = string; + while (*p == ' ') + { + p++; + indent++; + } + + // Limit indentation to 192 characters + + indent = MIN(indent, 192); + + bool first_line = true; + int length = strlen(p); + do { + const char* q; + if (length + indent > 255) + { + // if we did not find somewhere to break between the 200th and 256th + // character just print out 256 characters + + bool open_quote = false; + for (q = p; (q - p + indent) < 255; q++) + { + if ((q - p + indent) > 220 && *q == ',' && !open_quote) + break; + if (*q == '\'' && *(q - 1) != '\\') + open_quote = !open_quote; + } + ++q; + } + else { + q = p + strlen(p); + } + + // Replace all occurrences of gds__ (or gds__) with isc_ + + char* q1 = line; + for (const char* p1 = p; p1 < q;) + { + if ((*q1++ = *p1++) == 'g') + { + if (p1 < q && (*q1++ = *p1++) == 'd') + { + if (p1 < q && (*q1++ = *p1++) == 's') + { + if (p1 < q && (*q1++ = *p1++) == '_') + { + char d = 0; + if (p1 < q && ((d = *p1++) == '_' || d == '$')) + strncpy(q1 - 4, "isc", 3); + else if (d) + *q1++ = d; + } + } + } + } + } + *q1 = 0; + printa(indent, "%s", line); + length = length - (q - p); + p = q; + if (first_line) + { + indent = MIN(indent + INDENT, 192); + first_line = false; + } + } while (length > 0); +} + + +//____________________________________________________________ +// +// Zap all know handles. +// + +static void gen_clear_handles(int column) +{ + for (gpre_req* request = gpreGlob.requests; request; request = request->req_next) + { + if (!(request->req_flags & REQ_exp_hand)) + printa(column, "%s = 0;", request->req_handle); + } +} + + +//____________________________________________________________ +// +// Generate a symbol to ease compatibility with V3. +// +/* +static void gen_compatibility_symbol(const TEXT* symbol, + const TEXT* v4_prefix, const TEXT* trailer) +{ + const char* v3_prefix = isLangCpp(gpreGlob.sw_language) ? "gds_" : "gds__"; + // v3_prefix = gpreGlob.sw_language == lang_cxx ? "gds_" : "gds__"; + + fprintf(gpreGlob.out_file, "#define %s%s\t%s%s%s\n", v3_prefix, symbol, + v4_prefix, symbol, trailer); +} +*/ + +//____________________________________________________________ +// +// Generate text to compile a request. +// + +static void gen_compile( const act* action, int column) +{ + PAT args; + const TEXT* pattern1 = + "%RH = %DH->compileRequest(%V1, sizeof(%RI), %RI);"; + const TEXT* pattern2 = "if (!%RH%IF && %S1%EN)"; + + const gpre_req* request = action->act_request; + args.pat_request = request; + const gpre_dbb* db = request->req_database; + args.pat_database = db; + args.pat_vector1 = status_vector(action); + args.pat_string1 = request_trans(action, request); + args.pat_condition = (gpreGlob.sw_auto && (action->act_error || (action->act_flags & ACT_sql))); + + if (gpreGlob.sw_auto) + t_start_auto(action, request, status_vector(action), column, true); + + PATTERN_expand((USHORT) column, pattern2, &args); + + args.pat_condition = !(request->req_flags & REQ_exp_hand); + args.pat_value1 = request->req_length; + PATTERN_expand((USHORT) (column + INDENT), pattern1, &args); + + // If blobs are present, zero out all of the blob handles. After this + // point, the handles are the user's responsibility + + const blb* blob = request->req_blobs; + if (blob) + { + fprintf(gpreGlob.out_file, "\n"); + align(column - INDENT); + for (; blob; blob = blob->blb_next) + fprintf(gpreGlob.out_file, "fb_%d = ", blob->blb_ident); + fprintf(gpreGlob.out_file, "0;"); + } +} + + +//____________________________________________________________ +// +// Generate a call to create a database. +// + +static void gen_create_database( const act* action, int column) +{ + const TEXT* pattern1 = + "%DH = fbProvider->createDatabase (%V1, \"%DF\", %IF%S1, %S2%EL0, NULL%EN);"; + TEXT s1[32], s2[32], trname[32]; + + const gpre_req* request = ((const mdbb*) action->act_object)->mdbb_dpb_request; + const gpre_dbb* db = request->req_database; + + sprintf(s1, "fb_%dl", request->req_ident); + sprintf(trname, "fb_%dt", request->req_ident); + + if (request->req_flags & REQ_extend_dpb) + { + sprintf(s2, "fb_%dp", request->req_ident); + if (request->req_length) + printa(column, "%s = fb_%d;", s2, request->req_ident); + else + printa(column, "%s = (char*) 0;", s2); + + printa(column, + "isc_expand_dpb (&%s, &%s, isc_dpb_user_name, %s, isc_dpb_password, %s, isc_dpb_sql_role_name, %s, isc_dpb_lc_messages, %s, isc_dpb_lc_ctype, %s, 0);", + s2, s1, + db->dbb_r_user ? db->dbb_r_user : "(char*) 0", + db->dbb_r_password ? db->dbb_r_password : "(char*) 0", + db->dbb_r_sql_role ? db->dbb_r_sql_role : "(char*) 0", + db->dbb_r_lc_messages ? db->dbb_r_lc_messages : "(char*) 0", + db->dbb_r_lc_ctype ? db->dbb_r_lc_ctype : "(char*) 0"); + } + else + sprintf(s2, "fb_%d", request->req_ident); + + PAT args; + args.pat_vector1 = status_vector(action); + args.pat_request = request; + args.pat_database = db; + args.pat_value1 = strlen(db->dbb_filename); + args.pat_condition = (request->req_length || (request->req_flags & REQ_extend_dpb)); + args.pat_string1 = s1; + args.pat_string2 = s2; + + PATTERN_expand((USHORT) column, pattern1, &args); + + // if the dpb was extended, free it here + + if (request->req_flags & REQ_extend_dpb) + { + if (request->req_length) + printa(column, "if (%s != fb_%d)", s2, request->req_ident); + printa(column + (request->req_length ? INDENT : 0), "isc_free ((char*) %s);", s2); + + // reset the length of the dpb + + printa(column, "%s = %d;", s1, request->req_length); + } + + request = action->act_request; + printa(column, "if (%s->isSuccess())", global_status_name); + column += INDENT; + begin(column); + printa(column, + "%s = %s->startTransaction (%s, 0, NULL);", + trname, db->dbb_name->sym_string, status_vector(action)); + printa(column, "if (%s)", trname); + column += INDENT; + align(column); + fprintf(gpreGlob.out_file, "%s->executeDyn(%s, %s, %d, fb_%d);", + request->req_database->dbb_name->sym_string, status_vector(action), + trname, request->req_length, request->req_ident); + column -= INDENT; + printa(column, "if (%s->isSuccess())", global_status_name); + printa(column + INDENT, "%s->commit(%s);", + trname, status_vector(action)); + printa(column, "if (!%s->isSuccess())", global_status_name); + printa(column + INDENT, "%s->rollback(%s);", + trname, status_vector(NULL)); + set_sqlcode(action, column); + endp(column); + printa(column - INDENT, "else"); + set_sqlcode(action, column); + column -= INDENT; +} + + +//____________________________________________________________ +// +// Generate substitution text for END_STREAM. +// + +static int gen_cursor_close( const act* action, const gpre_req* request, int column) +{ + PAT args; + ObjectNotImplemented(); + const TEXT* pattern1 = "if (%RIs && !isc_dsql_free_statement (%V1, &%RIs, %L1))"; + + args.pat_request = request; + args.pat_vector1 = status_vector(action); + args.pat_long1 = 1; + + PATTERN_expand((USHORT) column, pattern1, &args); + column += INDENT; + begin(column); + + return column; +} + + +//____________________________________________________________ +// +// Generate text to initialize a cursor. +// + +static void gen_cursor_init( const act* action, int column) +{ + + // If blobs are present, zero out all of the blob handles. After this + // point, the handles are the user's responsibility + + if (action->act_request->req_flags & (REQ_sql_blob_open | REQ_sql_blob_create)) + { + printa(column, "fb_%d = 0;", action->act_request->req_blobs->blb_ident); + } +} + + +//____________________________________________________________ +// +// Generate text to open an embedded SQL cursor. +// + +static int gen_cursor_open( const act* action, const gpre_req* request, int column) +{ + PAT args; + TEXT s[MAX_CURSOR_SIZE]; + ObjectNotImplemented(); + const TEXT* pattern1 = "if (!%RIs && %RH%IF && %DH%EN)"; + const TEXT* pattern2 = "if (!%RIs%IF && %DH%EN)"; + const TEXT* pattern3 = "isc_dsql_alloc_statement2 (%V1, &%DH, &%RIs);"; + const TEXT* pattern4 = "if (%RIs%IF && %S3%EN)"; + const TEXT* pattern5 = "if (!isc_dsql_set_cursor_name (%V1, &%RIs, %S1, 0) &&"; + const TEXT* pattern6 = "!isc_dsql_execute_m (%V1, &%S3, &%RIs, 0, %S2, %N2, 0, %S2))"; + + args.pat_request = request; + args.pat_database = request->req_database; + args.pat_vector1 = status_vector(action); + args.pat_condition = gpreGlob.sw_auto; + args.pat_string1 = make_name(s, ((open_cursor*) action->act_object)->opn_cursor); + args.pat_string2 = NULL_STRING; + args.pat_string3 = request_trans(action, request); + args.pat_value2 = -1; + + PATTERN_expand((USHORT) column, (action->act_type == ACT_open) ? pattern1 : pattern2, &args); + PATTERN_expand((USHORT) (column + INDENT), pattern3, &args); + PATTERN_expand((USHORT) column, pattern4, &args); + column += INDENT; + begin(column); + PATTERN_expand((USHORT) column, pattern5, &args); + column += INDENT; + PATTERN_expand((USHORT) column, pattern6, &args); + begin(column); + + return column; +} + + +//____________________________________________________________ +// +// Generate insertion text for the database statement. +// + +static void gen_database(int column) +{ + if (global_first_flag) + return; + + global_first_flag = true; + + fprintf(gpreGlob.out_file, "\n/**** GDS Preprocessor Definitions ****/\n"); + fprintf(gpreGlob.out_file, "#ifndef JRD_IBASE_H\n#include %s\n#endif\n", GDS_INCLUDE); + fprintf(gpreGlob.out_file, "#include <firebird/Provider.h>\n"); + + fprintf(gpreGlob.out_file, "#define CAST_CONST_MSG(A) (reinterpret_cast<const unsigned char*>(A))\n"); + fprintf(gpreGlob.out_file, "#define CAST_MSG(A) (reinterpret_cast<unsigned char*>(A))\n"); + + printa(column, "static %sISC_QUAD", CONST_STR); + printa(column + INDENT, "fbBlobNull = {0, 0};\t/* initializer for blobs */"); + + const TEXT* scope = ""; + + bool all_static = true; + bool all_extern = true; + + const gpre_dbb* db; + for (db = gpreGlob.isc_databases; db; db = db->dbb_next) + { + all_static = all_static && (db->dbb_scope == DBB_STATIC); + all_extern = all_extern && (db->dbb_scope == DBB_EXTERN); + if (db->dbb_scope == DBB_STATIC) + scope = "static "; + else if (db->dbb_scope == DBB_EXTERN) + scope = "extern "; + printa(column, "%sFirebird::IAttachment*", scope); + if (!all_extern) + printa(column + INDENT, "%s = 0;\t\t/* database handle */\n", db->dbb_name->sym_string); + else + printa(column + INDENT, "%s;\t\t/* database handle */\n", db->dbb_name->sym_string); + } + + if (all_static) + scope = "static "; + else if (all_extern) + scope = "extern "; + + printa(column, "%sFirebird::ITransaction*", scope); + if (!all_extern) + printa(column + INDENT, "%s = 0;\t\t/* default transaction handle */", + gpreGlob.transaction_name); + else + printa(column + INDENT, "%s;\t\t/* default transaction handle */", + gpreGlob.transaction_name); + + printa(column, "%sFirebird::IMaster* fbMaster%s;\t\t/* master interface */", + scope, all_extern ? "" : " = fb_get_master_interface()"); + printa(column, "%sFirebird::IProvider* fbProvider%s;\t\t/* provider interface */", + scope, all_extern ? "" : " = fbMaster->getDispatcher()"); + + printa(column, "%sFirebird::IStatus* %s%s;\t/* status vector */", + scope, global_status_name, all_extern ? "" : " = fbMaster->getStatus();"); + printa(column, "%sFirebird::IStatus* %s2%s;\t/* status vector */", + scope, global_status_name, all_extern ? "" : " = fbMaster->getStatus();"); + + for (db = gpreGlob.isc_databases; db; db = db->dbb_next) + for (const tpb* tpb_iterator = db->dbb_tpbs; tpb_iterator; + tpb_iterator = tpb_iterator->tpb_dbb_next) + { + gen_tpb(tpb_iterator, column); + } + + // generate event parameter block for each event in module + + SSHORT max_count = 0; + for (gpre_lls* stack_ptr = gpreGlob.events; stack_ptr; stack_ptr = stack_ptr->lls_next) + { + SSHORT count = gen_event_block((act*) stack_ptr->lls_object); + max_count = MAX(count, max_count); + } + + if (max_count) + printa(column, "%s%s isc_events [%d];\t/* event vector */", scope, DCL_LONG, max_count); + + for (gpre_req* request = gpreGlob.requests; request; request = request->req_next) + { + gen_request(request); + + // Array declarations + + if (gpre_port* port = request->req_primary) + for (ref* reference = port->por_references; reference; reference = reference->ref_next) + { + if (reference->ref_flags & REF_fetch_array) + make_array_declaration(reference); + } + } + + fprintf(gpreGlob.out_file, "\n\n"); +/* + gen_compatibility_symbol("blob_null", "isc_", "\t// compatibility symbols"); + //gen_compatibility_symbol ("database", "isc_", ""); + //gen_compatibility_symbol ("trans", "isc_", ""); + gen_compatibility_symbol("status", "isc_", ""); + gen_compatibility_symbol("status2", "isc_", ""); + gen_compatibility_symbol("array_length", "isc_", ""); + if (max_count) + gen_compatibility_symbol("events", "isc_", ""); + gen_compatibility_symbol("count", "isc_", ""); + gen_compatibility_symbol("slack", "isc_", ""); + gen_compatibility_symbol("utility", "isc_", "\t// end of compatibility symbols"); + */ +} + + +//____________________________________________________________ +// +// Generate a call to update metadata. +// + +static void gen_ddl( const act* action, int column) +{ + // Set up command type for call to RDB$DDL + + const gpre_req* request = action->act_request; + + if (gpreGlob.sw_auto) + { + t_start_auto(action, 0, status_vector(action), column, true); + printa(column, "if (%s)", gpreGlob.transaction_name); + column += INDENT; + } + + align(column); + fprintf(gpreGlob.out_file, "%s->executeDyn(%s, %s, %d, fb_%d);", + request->req_database->dbb_name->sym_string, + status_vector(action), + gpreGlob.transaction_name, request->req_length, request->req_ident); + + if (gpreGlob.sw_auto) + { + column -= INDENT; + printa(column, "if (%s->isSuccess())", global_status_name); + printa(column + INDENT, "%s->commit(%s);", + gpreGlob.transaction_name, status_vector(action)); + printa(column, "if (!%s->isSuccess())", global_status_name); + printa(column + INDENT, "%s->rollback(%s);", + gpreGlob.transaction_name, status_vector(NULL)); + } + + set_sqlcode(action, column); +} + + +//____________________________________________________________ +// +// Generate a call to drop a database. +// + +static void gen_drop_database( const act* action, int column) +{ + ObjectNotImplemented(); + const gpre_dbb* db = (gpre_dbb*) action->act_object; + align(column); + + fprintf(gpreGlob.out_file, "isc_drop_database (%s, %"SIZEFORMAT", \"%s\", rdb$k_db_type_gds);", + status_vector(action), + strlen(db->dbb_filename), db->dbb_filename); + set_sqlcode(action, column); +} + + +//____________________________________________________________ +// +// Generate a dynamic SQL statement. +// + +static void gen_dyn_close( const act* action, int column) +{ + TEXT s[MAX_CURSOR_SIZE]; + + ObjectNotImplemented(); + const dyn* statement = (dyn*) action->act_object; + printa(column, "isc_embed_dsql_close (%s, %s);", + global_status_name, make_name(s, statement->dyn_cursor_name)); + set_sqlcode(action, column); +} + + +//____________________________________________________________ +// +// Generate a dynamic SQL statement. +// + +static void gen_dyn_declare( const act* action, int column) +{ + TEXT s1[MAX_CURSOR_SIZE], s2[MAX_CURSOR_SIZE]; + + ObjectNotImplemented(); + const dyn* statement = (dyn*) action->act_object; + printa(column, "isc_embed_dsql_declare (%s, %s, %s);", + global_status_name, + make_name(s1, statement->dyn_statement_name), + make_name(s2, statement->dyn_cursor_name)); + set_sqlcode(action, column); +} + + +//____________________________________________________________ +// +// Generate a dynamic SQL statement. +// + +static void gen_dyn_describe(const act* action, int column, bool bind_flag) +{ + TEXT s[MAX_CURSOR_SIZE]; + + ObjectNotImplemented(); + const dyn* statement = (dyn*) action->act_object; + printa(column, "isc_embed_dsql_describe%s (%s, %s, %d, %s);", + bind_flag ? "_bind" : "", + global_status_name, + make_name(s, statement->dyn_statement_name), + gpreGlob.sw_sql_dialect, statement->dyn_sqlda); + set_sqlcode(action, column); +} + + +//____________________________________________________________ +// +// Generate a dynamic SQL statement. +// + +static void gen_dyn_execute( const act* action, int column) +{ + TEXT s[MAX_CURSOR_SIZE]; + gpre_req* request; + gpre_req req_const; + + ObjectNotImplemented(); + dyn* statement = (dyn*) action->act_object; + const TEXT* transaction; + if (statement->dyn_trans) + { + transaction = statement->dyn_trans; + request = &req_const; + request->req_trans = transaction; + } + else + { + transaction = gpreGlob.transaction_name; + request = NULL; + } + + if (gpreGlob.sw_auto) + { + t_start_auto(action, request, status_vector(action), column, true); + printa(column, "if (%s)", transaction); + column += INDENT; + } + + if (statement->dyn_sqlda2) + printa(column, "isc_embed_dsql_execute2 (%s, &%s, %s, %d, %s, %s);", + global_status_name, + transaction, + make_name(s, statement->dyn_statement_name), + gpreGlob.sw_sql_dialect, + statement->dyn_sqlda ? statement->dyn_sqlda : NULL_STRING, + statement->dyn_sqlda2); + else + printa(column, "isc_embed_dsql_execute (%s, &%s, %s, %d, %s);", + global_status_name, + transaction, + make_name(s, statement->dyn_statement_name), + gpreGlob.sw_sql_dialect, + statement->dyn_sqlda ? statement->dyn_sqlda : NULL_STRING); + + if (gpreGlob.sw_auto) + column -= INDENT; + + set_sqlcode(action, column); +} + + +//____________________________________________________________ +// +// Generate a dynamic SQL statement. +// + +static void gen_dyn_fetch( const act* action, int column) +{ + TEXT s[MAX_CURSOR_SIZE]; + + ObjectNotImplemented(); + const dyn* statement = (dyn*) action->act_object; + printa(column, "SQLCODE = isc_embed_dsql_fetch (%s, %s, %d, %s);", + global_status_name, make_name(s, statement->dyn_cursor_name), + gpreGlob.sw_sql_dialect, + statement->dyn_sqlda ? statement->dyn_sqlda : NULL_SQLDA); + + printa(column, "if (SQLCODE != 100) SQLCODE = isc_sqlcode (%s);", global_status_name); +} + + +//____________________________________________________________ +// +// Generate code for an EXECUTE IMMEDIATE dynamic S... [truncated message content] |
From: <fir...@us...> - 2014-01-16 00:31:51
|
Revision: 59040 http://sourceforge.net/p/firebird/code/59040 Author: firebirds Date: 2014-01-16 00:31:47 +0000 (Thu, 16 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-15 13:02:08 UTC (rev 59039) +++ firebird/trunk/ChangeLog 2014-01-16 00:31:47 UTC (rev 59040) @@ -1,3 +1,44 @@ + 2014-01-15 13:02 alexpeshkoff + M builds/posix/make.rules + M builds/posix/prefix.linux_amd64 + M src/auth/SecureRemotePassword/Message.h + M src/common/MsgMetadata.cpp + M src/common/MsgMetadata.h + M src/common/classes/ImplementHelper.h + M src/common/classes/TempFile.cpp + M src/common/classes/TempFile.h + M src/gpre/boot/gpre_meta_boot.cpp + M src/gpre/gpre.cpp + M src/gpre/gpreswi.h + M src/gpre/lang_proto.h + A src/gpre/obj_cxx.cpp + M src/include/firebird/Interface.h + M src/include/firebird/Provider.h + A src/include/firebird/Utl.h + M src/isql/extract.epp + M src/isql/isql.epp + M src/isql/isql.h + M src/isql/isql_proto.h + M src/isql/show.epp + M src/isql/show_proto.h + M src/msgs/facilities2.sql + M src/msgs/messages2.sql + M src/remote/client/BlrFromMessage.cpp + M src/yvalve/MasterImplementation.cpp + M src/yvalve/MasterImplementation.h + M src/yvalve/perf.cpp + M src/yvalve/prepa_proto.h + M src/yvalve/preparse.cpp + M src/yvalve/utl.cpp + M src/yvalve/utl_proto.h + M src/yvalve/why.cpp + M src/yvalve/why_proto.h +Implemented CORE-4317: Make ISQL use new object API with 32-bit length for object sizes (messages, SQL statements, etc.) +Implementation also includes changes in GPRE, but this utility is not complete - only commands, used in ISQL, +are working in code generator for new API. +New interface IUtl is added - it performs tasks, related with database objects (attachment, transaction, etc.), +but not requiring routing in YValve, i.e. client only tasks. + 2014-01-14 15:03 asfernandes M src/dsql/DdlNodes.epp M src/dsql/ExprNodes.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-15 13:02:08 UTC (rev 59039) +++ firebird/trunk/src/jrd/build_no.h 2014-01-16 00:31:47 UTC (rev 59040) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30837 + FORMAL BUILD NUMBER:30838 */ -#define PRODUCT_VER_STRING "3.0.0.30837" -#define FILE_VER_STRING "WI-T3.0.0.30837" -#define LICENSE_VER_STRING "WI-T3.0.0.30837" -#define FILE_VER_NUMBER 3, 0, 0, 30837 +#define PRODUCT_VER_STRING "3.0.0.30838" +#define FILE_VER_STRING "WI-T3.0.0.30838" +#define LICENSE_VER_STRING "WI-T3.0.0.30838" +#define FILE_VER_NUMBER 3, 0, 0, 30838 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30837" +#define FB_BUILD_NO "30838" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-15 13:02:08 UTC (rev 59039) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-16 00:31:47 UTC (rev 59040) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30837 +BuildNum=30838 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...> - 2014-01-16 11:41:51
|
Revision: 59041 http://sourceforge.net/p/firebird/code/59041 Author: hvlad Date: 2014-01-16 11:41:46 +0000 (Thu, 16 Jan 2014) Log Message: ----------- Adjusted MSVC10 build. Modified Paths: -------------- firebird/trunk/builds/win32/msvc10/gpre_common.vcxproj firebird/trunk/builds/win32/msvc10/gpre_common.vcxproj.filters firebird/trunk/builds/win32/preprocess.bat firebird/trunk/src/common/utils.cpp firebird/trunk/src/common/utils_proto.h firebird/trunk/src/gpre/obj_cxx.cpp firebird/trunk/src/yvalve/MasterImplementation.cpp firebird/trunk/src/yvalve/perf.cpp Modified: firebird/trunk/builds/win32/msvc10/gpre_common.vcxproj =================================================================== --- firebird/trunk/builds/win32/msvc10/gpre_common.vcxproj 2014-01-16 00:31:47 UTC (rev 59040) +++ firebird/trunk/builds/win32/msvc10/gpre_common.vcxproj 2014-01-16 11:41:46 UTC (rev 59041) @@ -202,6 +202,7 @@ <ClCompile Include="..\..\..\src\gpre\languages\rmc.cpp" /> <ClCompile Include="..\..\..\src\gpre\movg.cpp" /> <ClCompile Include="..\..\..\src\gpre\msc.cpp" /> + <ClCompile Include="..\..\..\src\gpre\obj_cxx.cpp" /> <ClCompile Include="..\..\..\src\gpre\par.cpp" /> <ClCompile Include="..\..\..\src\gpre\pat.cpp" /> <ClCompile Include="..\..\..\src\gpre\sqe.cpp" /> Modified: firebird/trunk/builds/win32/msvc10/gpre_common.vcxproj.filters =================================================================== --- firebird/trunk/builds/win32/msvc10/gpre_common.vcxproj.filters 2014-01-16 00:31:47 UTC (rev 59040) +++ firebird/trunk/builds/win32/msvc10/gpre_common.vcxproj.filters 2014-01-16 11:41:46 UTC (rev 59041) @@ -75,6 +75,9 @@ <ClCompile Include="..\..\..\src\gpre\languages\rmc.cpp"> <Filter>languages</Filter> </ClCompile> + <ClCompile Include="..\..\..\src\gpre\obj_cxx.cpp"> + <Filter>source</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\..\..\src\gpre\words.h"> Modified: firebird/trunk/builds/win32/preprocess.bat =================================================================== --- firebird/trunk/builds/win32/preprocess.bat 2014-01-16 00:31:47 UTC (rev 59040) +++ firebird/trunk/builds/win32/preprocess.bat 2014-01-16 11:41:46 UTC (rev 59041) @@ -59,7 +59,7 @@ @for %%i in (metd, DdlNodes, PackageNodes) do @call :PREPROCESS dsql %%i -gds_cxx @for %%i in (gpre_meta) do @call :PREPROCESS gpre/std %%i @for %%i in (backup, restore, OdsDetection) do @call :PREPROCESS burp %%i -@for %%i in (extract, isql, show) do @call :PREPROCESS isql %%i +@for %%i in (extract, isql, show) do @call :PREPROCESS isql %%i -ocxx @for %%i in (dba) do @call :PREPROCESS utilities/gstat %%i @set GPRE=%FB_BIN_DIR%\gpre_boot @@ -85,7 +85,7 @@ @for %%i in (codes) do @call :PREPROCESS misc %%i @for %%i in (build_file) do @call :PREPROCESS msgs %%i @for %%i in (help, meta, proc, show) do @call :PREPROCESS qli %%i -@for %%i in (extract, isql, show) do @call :PREPROCESS isql %%i +@for %%i in (extract, isql, show) do @call :PREPROCESS isql %%i -ocxx @for %%i in (dba) do @call :PREPROCESS utilities/gstat %%i @for %%i in (stats) do @call :PREPROCESS utilities %%i @goto :EOF Modified: firebird/trunk/src/common/utils.cpp =================================================================== --- firebird/trunk/src/common/utils.cpp 2014-01-16 00:31:47 UTC (rev 59040) +++ firebird/trunk/src/common/utils.cpp 2014-01-16 11:41:46 UTC (rev 59041) @@ -846,6 +846,34 @@ #endif } + +// returns system and user time in milliseconds that process runs +void get_process_times(SINT64 &userTime, SINT64 &sysTime) +{ +#if defined(WIN_NT) + FILETIME utime, stime; + if (GetProcessTimes(GetCurrentProcess(), NULL, NULL, &stime, &utime)) + { + LARGE_INTEGER lint; + + lint.HighPart = stime.dwHighDateTime; + lint.LowPart = stime.dwLowDateTime; + sysTime = lint.QuadPart / 10000; + + lint.HighPart = utime.dwHighDateTime; + lint.LowPart = utime.dwLowDateTime; + userTime = lint.QuadPart / 10000; + } + else + { + sysTime = userTime = 0; + } +#else + implement me !!! +#endif +} + + void exactNumericToStr(SINT64 value, int scale, Firebird::string& target, bool append) { if (value == 0) Modified: firebird/trunk/src/common/utils_proto.h =================================================================== --- firebird/trunk/src/common/utils_proto.h 2014-01-16 00:31:47 UTC (rev 59040) +++ firebird/trunk/src/common/utils_proto.h 2014-01-16 11:41:46 UTC (rev 59041) @@ -138,6 +138,8 @@ // Returns frequency of performance counter in Hz SINT64 query_performance_frequency(); + void get_process_times(SINT64 &userTime, SINT64 &sysTime); + void exactNumericToStr(SINT64 value, int scale, Firebird::string& target, bool append = false); enum FB_DIR { Modified: firebird/trunk/src/gpre/obj_cxx.cpp =================================================================== --- firebird/trunk/src/gpre/obj_cxx.cpp 2014-01-16 00:31:47 UTC (rev 59040) +++ firebird/trunk/src/gpre/obj_cxx.cpp 2014-01-16 11:41:46 UTC (rev 59041) @@ -3789,7 +3789,7 @@ // generate the attach database itself const TEXT* dpb_size_ptr = "0"; - const TEXT* dpb_ptr = "(char*) 0"; + const TEXT* dpb_ptr = "NULL"; align(column); if (filename) Modified: firebird/trunk/src/yvalve/MasterImplementation.cpp =================================================================== --- firebird/trunk/src/yvalve/MasterImplementation.cpp 2014-01-16 00:31:47 UTC (rev 59040) +++ firebird/trunk/src/yvalve/MasterImplementation.cpp 2014-01-16 11:41:46 UTC (rev 59041) @@ -674,9 +674,10 @@ namespace Why { + extern UtlInterface utlInterface; // Implemented in utl.cpp + Firebird::IUtl* FB_CARG MasterImplementation::getUtlInterface() { - extern UtlInterface utlInterface; // Implemented in utl.cpp return &utlInterface; } Modified: firebird/trunk/src/yvalve/perf.cpp =================================================================== --- firebird/trunk/src/yvalve/perf.cpp 2014-01-16 00:31:47 UTC (rev 59040) +++ firebird/trunk/src/yvalve/perf.cpp 2014-01-16 11:41:46 UTC (rev 59041) @@ -459,6 +459,10 @@ UCHAR info[TOTAL_COUNTERS]; // will never use all, but do not care about few bytes UCHAR* pinfo = info; +#ifdef WIN_NT +#define strtok_r strtok_s +#endif + for (char* nm = strtok_r(set, delim, &save); nm; nm = strtok_r(NULL, delim, &save)) { Firebird::NoCaseString name(nm); @@ -483,14 +487,20 @@ found: ; } +#ifdef WIN_NT +#undef strtok_r +#endif + // Force reset counters memset(counters, 0, n * sizeof(ISC_INT64)); // Fill time counters if (typeMask & CNT_TIMER) { - struct tms tus; - clock_t tr = times(&tus); + SINT64 tr = fb_utils::query_performance_counter() * 1000 / fb_utils::query_performance_frequency(); + SINT64 uTime, sTime; + fb_utils::get_process_times(uTime, sTime); + for (unsigned i = 0; i < TOTAL_COUNTERS; ++i) { if (cntLink[i] == ~0u) @@ -504,10 +514,10 @@ v = tr; break; case CNT_TIME_USER: - v = tus.tms_utime; + v = uTime; break; case CNT_TIME_SYSTEM: - v = tus.tms_stime; + v = sTime; break; default: fb_assert(false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-17 00:30:33
|
Revision: 59045 http://sourceforge.net/p/firebird/code/59045 Author: firebirds Date: 2014-01-17 00:30:31 +0000 (Fri, 17 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-16 14:52:18 UTC (rev 59044) +++ firebird/trunk/ChangeLog 2014-01-17 00:30:31 UTC (rev 59045) @@ -1,3 +1,32 @@ + 2014-01-16 14:52 asfernandes + M src/common/classes/TempFile.cpp + M src/gpre/gpreswi.h + M src/isql/extract.epp + M src/isql/isql.epp + M src/isql/isql.h +Misc. + + 2014-01-16 13:44 alexpeshkoff + M src/isql/isql.epp +Print 3 digits in times + fix for windows + + 2014-01-16 13:07 alexpeshkoff + M src/common/utils.cpp + M src/isql/isql.epp + M src/yvalve/perf.cpp +Fixed posix build + + 2014-01-16 11:41 hvlad + M builds/win32/msvc10/gpre_common.vcxproj + M builds/win32/msvc10/gpre_common.vcxproj.filters + M builds/win32/preprocess.bat + M src/common/utils.cpp + M src/common/utils_proto.h + M src/gpre/obj_cxx.cpp + M src/yvalve/MasterImplementation.cpp + M src/yvalve/perf.cpp +Adjusted MSVC10 build. + 2014-01-15 13:02 alexpeshkoff M builds/posix/make.rules M builds/posix/prefix.linux_amd64 Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-16 14:52:18 UTC (rev 59044) +++ firebird/trunk/src/jrd/build_no.h 2014-01-17 00:30:31 UTC (rev 59045) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30838 + FORMAL BUILD NUMBER:30842 */ -#define PRODUCT_VER_STRING "3.0.0.30838" -#define FILE_VER_STRING "WI-T3.0.0.30838" -#define LICENSE_VER_STRING "WI-T3.0.0.30838" -#define FILE_VER_NUMBER 3, 0, 0, 30838 +#define PRODUCT_VER_STRING "3.0.0.30842" +#define FILE_VER_STRING "WI-T3.0.0.30842" +#define LICENSE_VER_STRING "WI-T3.0.0.30842" +#define FILE_VER_NUMBER 3, 0, 0, 30842 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30838" +#define FB_BUILD_NO "30842" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-16 14:52:18 UTC (rev 59044) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-17 00:30:31 UTC (rev 59045) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30838 +BuildNum=30842 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-18 00:33:09
|
Revision: 59053 http://sourceforge.net/p/firebird/code/59053 Author: firebirds Date: 2014-01-18 00:33:05 +0000 (Sat, 18 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-17 15:05:19 UTC (rev 59052) +++ firebird/trunk/ChangeLog 2014-01-18 00:33:05 UTC (rev 59053) @@ -1,3 +1,41 @@ + 2014-01-17 15:05 asfernandes + M src/isql/show.epp + M src/remote/server/server.cpp + M src/yvalve/perf.cpp + M src/yvalve/utl.cpp +Misc. and fixes. + + 2014-01-17 14:53 dimitr + M src/jrd/opt.cpp +Placed booleans closer to the retrieval for limited navigational scans. Hopefully, this shouldn't affect anything else. + + 2014-01-17 14:17 alexpeshkoff + M src/jrd/blb_proto.h +Cleanup + + 2014-01-17 14:09 alexpeshkoff + M src/isql/isql.epp +Misc postfixes for ISQL, thanks to Adriano + + 2014-01-17 13:14 alexpeshkoff + M src/remote/server/server.cpp +misc + + 2014-01-17 12:33 alexpeshkoff + M src/dsql/dsql.cpp + M src/include/firebird/Provider.h + M src/jrd/EngineInterface.h + M src/jrd/jrd.cpp + M src/remote/client/interface.cpp + M src/remote/server/server.cpp + M src/yvalve/YObjects.h + M src/yvalve/why.cpp +Fixed CORE-4286: "Statement already has a cursor assigned" error when trying to execute another SQL statement using different cursor name. Moved method setCursorName() from IStatement to IResultSet - it was my fault when splitting cursor from statement. + + 2014-01-17 12:19 dimitr + M src/dsql/ExprNodes.h +Fixed CORE-4318: Predicates involving PSQL variables/parameters are not pushed inside the aggregation. + 2014-01-16 14:52 asfernandes M src/common/classes/TempFile.cpp M src/gpre/gpreswi.h Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-17 15:05:19 UTC (rev 59052) +++ firebird/trunk/src/jrd/build_no.h 2014-01-18 00:33:05 UTC (rev 59053) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30842 + FORMAL BUILD NUMBER:30849 */ -#define PRODUCT_VER_STRING "3.0.0.30842" -#define FILE_VER_STRING "WI-T3.0.0.30842" -#define LICENSE_VER_STRING "WI-T3.0.0.30842" -#define FILE_VER_NUMBER 3, 0, 0, 30842 +#define PRODUCT_VER_STRING "3.0.0.30849" +#define FILE_VER_STRING "WI-T3.0.0.30849" +#define LICENSE_VER_STRING "WI-T3.0.0.30849" +#define FILE_VER_NUMBER 3, 0, 0, 30849 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30842" +#define FB_BUILD_NO "30849" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-17 15:05:19 UTC (rev 59052) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-18 00:33:05 UTC (rev 59053) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30842 +BuildNum=30849 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-20 00:28:25
|
Revision: 59055 http://sourceforge.net/p/firebird/code/59055 Author: firebirds Date: 2014-01-20 00:28:23 +0000 (Mon, 20 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-19 20:38:16 UTC (rev 59054) +++ firebird/trunk/ChangeLog 2014-01-20 00:28:23 UTC (rev 59055) @@ -1,3 +1,10 @@ + 2014-01-19 20:38 asfernandes + M src/common/utils.cpp + M src/jrd/jrd.cpp + M src/remote/server/server.cpp + M src/yvalve/why.cpp +Misc. + 2014-01-17 15:05 asfernandes M src/isql/show.epp M src/remote/server/server.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-19 20:38:16 UTC (rev 59054) +++ firebird/trunk/src/jrd/build_no.h 2014-01-20 00:28:23 UTC (rev 59055) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30849 + FORMAL BUILD NUMBER:30850 */ -#define PRODUCT_VER_STRING "3.0.0.30849" -#define FILE_VER_STRING "WI-T3.0.0.30849" -#define LICENSE_VER_STRING "WI-T3.0.0.30849" -#define FILE_VER_NUMBER 3, 0, 0, 30849 +#define PRODUCT_VER_STRING "3.0.0.30850" +#define FILE_VER_STRING "WI-T3.0.0.30850" +#define LICENSE_VER_STRING "WI-T3.0.0.30850" +#define FILE_VER_NUMBER 3, 0, 0, 30850 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30849" +#define FB_BUILD_NO "30850" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-19 20:38:16 UTC (rev 59054) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-20 00:28:23 UTC (rev 59055) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30849 +BuildNum=30850 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-21 00:32:29
|
Revision: 59061 http://sourceforge.net/p/firebird/code/59061 Author: firebirds Date: 2014-01-21 00:32:25 +0000 (Tue, 21 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-20 14:36:08 UTC (rev 59060) +++ firebird/trunk/ChangeLog 2014-01-21 00:32:25 UTC (rev 59061) @@ -1,3 +1,24 @@ + 2014-01-20 14:36 alexpeshkoff + M src/include/firebird/Utl.h + M src/isql/isql.epp + M src/isql/show.epp + M src/yvalve/utl.cpp + M src/yvalve/utl_proto.h +Changes in IUtl, suggested by Adriano & Dmitry + + 2014-01-20 13:08 alexpeshkoff + A src/common/classes/AlignedBuffer.h + M src/isql/show.epp +Fixed possible alignment issue + + 2014-01-20 10:20 hvlad + M src/jrd/trace/TraceObjects.cpp +Fixed bug CORE-4319 : Engine crashes when trace config contains line "connection_id=NN" and we attempt to connect to non-existent database/alias + + 2014-01-20 09:13 hvlad + M src/common/utils.cpp +Fixed bug CORE-4320 : Regression: isql crash when receiving statistics of execution of sql query + 2014-01-19 20:38 asfernandes M src/common/utils.cpp M src/jrd/jrd.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-20 14:36:08 UTC (rev 59060) +++ firebird/trunk/src/jrd/build_no.h 2014-01-21 00:32:25 UTC (rev 59061) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30850 + FORMAL BUILD NUMBER:30854 */ -#define PRODUCT_VER_STRING "3.0.0.30850" -#define FILE_VER_STRING "WI-T3.0.0.30850" -#define LICENSE_VER_STRING "WI-T3.0.0.30850" -#define FILE_VER_NUMBER 3, 0, 0, 30850 +#define PRODUCT_VER_STRING "3.0.0.30854" +#define FILE_VER_STRING "WI-T3.0.0.30854" +#define LICENSE_VER_STRING "WI-T3.0.0.30854" +#define FILE_VER_NUMBER 3, 0, 0, 30854 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30850" +#define FB_BUILD_NO "30854" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-20 14:36:08 UTC (rev 59060) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-21 00:32:25 UTC (rev 59061) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30850 +BuildNum=30854 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-23 00:49:28
|
Revision: 59065 http://sourceforge.net/p/firebird/code/59065 Author: firebirds Date: 2014-01-23 00:49:25 +0000 (Thu, 23 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-22 11:21:51 UTC (rev 59064) +++ firebird/trunk/ChangeLog 2014-01-23 00:49:25 UTC (rev 59065) @@ -1,3 +1,7 @@ + 2014-01-22 11:21 alexpeshkoff + M src/isql/isql.epp +Fixed CORE-4321: Regression: ISQL does not destroy the SQL statement + 2014-01-20 14:36 alexpeshkoff M src/include/firebird/Utl.h M src/isql/isql.epp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-22 11:21:51 UTC (rev 59064) +++ firebird/trunk/src/jrd/build_no.h 2014-01-23 00:49:25 UTC (rev 59065) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30854 + FORMAL BUILD NUMBER:30855 */ -#define PRODUCT_VER_STRING "3.0.0.30854" -#define FILE_VER_STRING "WI-T3.0.0.30854" -#define LICENSE_VER_STRING "WI-T3.0.0.30854" -#define FILE_VER_NUMBER 3, 0, 0, 30854 +#define PRODUCT_VER_STRING "3.0.0.30855" +#define FILE_VER_STRING "WI-T3.0.0.30855" +#define LICENSE_VER_STRING "WI-T3.0.0.30855" +#define FILE_VER_NUMBER 3, 0, 0, 30855 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30854" +#define FB_BUILD_NO "30855" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-22 11:21:51 UTC (rev 59064) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-23 00:49:25 UTC (rev 59065) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30854 +BuildNum=30855 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-24 00:34:29
|
Revision: 59071 http://sourceforge.net/p/firebird/code/59071 Author: firebirds Date: 2014-01-24 00:34:27 +0000 (Fri, 24 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-23 18:35:29 UTC (rev 59070) +++ firebird/trunk/ChangeLog 2014-01-24 00:34:27 UTC (rev 59071) @@ -1,3 +1,17 @@ + 2014-01-23 12:26 alexpeshkoff + M src/common/classes/fb_tls.h + M src/isql/isql.epp +Misc formattingsrc/common/classes/fb_tls.h + + 2014-01-23 11:20 hvlad + M src/jrd/cch.cpp +Misc. + + 2014-01-23 09:46 paulbeach + M src/common/config/os/darwin/config_root.cpp + M src/common/os/darwin/mod_loader.cpp +Darwin port for Firebird 3 + 2014-01-22 11:21 alexpeshkoff M src/isql/isql.epp Fixed CORE-4321: Regression: ISQL does not destroy the SQL statement Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-23 18:35:29 UTC (rev 59070) +++ firebird/trunk/src/jrd/build_no.h 2014-01-24 00:34:27 UTC (rev 59071) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30855 + FORMAL BUILD NUMBER:30858 */ -#define PRODUCT_VER_STRING "3.0.0.30855" -#define FILE_VER_STRING "WI-T3.0.0.30855" -#define LICENSE_VER_STRING "WI-T3.0.0.30855" -#define FILE_VER_NUMBER 3, 0, 0, 30855 +#define PRODUCT_VER_STRING "3.0.0.30858" +#define FILE_VER_STRING "WI-T3.0.0.30858" +#define LICENSE_VER_STRING "WI-T3.0.0.30858" +#define FILE_VER_NUMBER 3, 0, 0, 30858 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30855" +#define FB_BUILD_NO "30858" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-23 18:35:29 UTC (rev 59070) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-24 00:34:27 UTC (rev 59071) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30855 +BuildNum=30858 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-26 00:24:56
|
Revision: 59076 http://sourceforge.net/p/firebird/code/59076 Author: firebirds Date: 2014-01-26 00:24:53 +0000 (Sun, 26 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-25 09:05:04 UTC (rev 59075) +++ firebird/trunk/ChangeLog 2014-01-26 00:24:53 UTC (rev 59076) @@ -1,3 +1,7 @@ + 2014-01-25 09:05 dimitr + M src/dsql/Nodes.h +Misc. + 2014-01-23 12:26 alexpeshkoff M src/common/classes/fb_tls.h M src/isql/isql.epp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-25 09:05:04 UTC (rev 59075) +++ firebird/trunk/src/jrd/build_no.h 2014-01-26 00:24:53 UTC (rev 59076) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30858 + FORMAL BUILD NUMBER:30859 */ -#define PRODUCT_VER_STRING "3.0.0.30858" -#define FILE_VER_STRING "WI-T3.0.0.30858" -#define LICENSE_VER_STRING "WI-T3.0.0.30858" -#define FILE_VER_NUMBER 3, 0, 0, 30858 +#define PRODUCT_VER_STRING "3.0.0.30859" +#define FILE_VER_STRING "WI-T3.0.0.30859" +#define LICENSE_VER_STRING "WI-T3.0.0.30859" +#define FILE_VER_NUMBER 3, 0, 0, 30859 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30858" +#define FB_BUILD_NO "30859" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-25 09:05:04 UTC (rev 59075) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-26 00:24:53 UTC (rev 59076) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30858 +BuildNum=30859 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-27 00:42:05
|
Revision: 59078 http://sourceforge.net/p/firebird/code/59078 Author: firebirds Date: 2014-01-27 00:42:01 +0000 (Mon, 27 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-26 15:27:15 UTC (rev 59077) +++ firebird/trunk/ChangeLog 2014-01-27 00:42:01 UTC (rev 59078) @@ -1,3 +1,7 @@ + 2014-01-26 15:27 dimitr + M src/jrd/Optimizer.cpp +Front-ported my recent commit re. possibly slow restore. + 2014-01-25 09:05 dimitr M src/dsql/Nodes.h Misc. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-26 15:27:15 UTC (rev 59077) +++ firebird/trunk/src/jrd/build_no.h 2014-01-27 00:42:01 UTC (rev 59078) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30859 + FORMAL BUILD NUMBER:30860 */ -#define PRODUCT_VER_STRING "3.0.0.30859" -#define FILE_VER_STRING "WI-T3.0.0.30859" -#define LICENSE_VER_STRING "WI-T3.0.0.30859" -#define FILE_VER_NUMBER 3, 0, 0, 30859 +#define PRODUCT_VER_STRING "3.0.0.30860" +#define FILE_VER_STRING "WI-T3.0.0.30860" +#define LICENSE_VER_STRING "WI-T3.0.0.30860" +#define FILE_VER_NUMBER 3, 0, 0, 30860 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30859" +#define FB_BUILD_NO "30860" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-26 15:27:15 UTC (rev 59077) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-27 00:42:01 UTC (rev 59078) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30859 +BuildNum=30860 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...> - 2014-01-27 01:09:37
|
Revision: 59080 http://sourceforge.net/p/firebird/code/59080 Author: asfernandes Date: 2014-01-27 01:09:32 +0000 (Mon, 27 Jan 2014) Log Message: ----------- Fixed CORE-4322 - Engine crashes when use aggregate or window functions in recursive query. Vlad, please review. Modified Paths: -------------- firebird/trunk/lang_helpers/gds_codes.ftn firebird/trunk/lang_helpers/gds_codes.pas firebird/trunk/src/dsql/DsqlCompilerScratch.cpp firebird/trunk/src/dsql/pass1.cpp firebird/trunk/src/include/gen/codetext.h firebird/trunk/src/include/gen/iberror.h firebird/trunk/src/include/gen/msgs.h firebird/trunk/src/include/gen/sql_code.h firebird/trunk/src/include/gen/sql_state.h firebird/trunk/src/msgs/facilities2.sql firebird/trunk/src/msgs/messages2.sql firebird/trunk/src/msgs/system_errors2.sql Modified: firebird/trunk/lang_helpers/gds_codes.ftn =================================================================== --- firebird/trunk/lang_helpers/gds_codes.ftn 2014-01-27 01:09:05 UTC (rev 59079) +++ firebird/trunk/lang_helpers/gds_codes.ftn 2014-01-27 01:09:32 UTC (rev 59080) @@ -2242,6 +2242,8 @@ PARAMETER (GDS__dsql_grant_failed = 336397319) INTEGER*4 GDS__dsql_revoke_failed PARAMETER (GDS__dsql_revoke_failed = 336397320) + INTEGER*4 GDS__dsql_cte_recursive_aggregate + PARAMETER (GDS__dsql_cte_recursive_aggregate = 336397321) INTEGER*4 GDS__gsec_cant_open_db PARAMETER (GDS__gsec_cant_open_db = 336723983) INTEGER*4 GDS__gsec_switches_error Modified: firebird/trunk/lang_helpers/gds_codes.pas =================================================================== --- firebird/trunk/lang_helpers/gds_codes.pas 2014-01-27 01:09:05 UTC (rev 59079) +++ firebird/trunk/lang_helpers/gds_codes.pas 2014-01-27 01:09:32 UTC (rev 59080) @@ -1128,6 +1128,7 @@ gds_dsql_alter_user_failed = 336397318; gds_dsql_grant_failed = 336397319; gds_dsql_revoke_failed = 336397320; + gds_dsql_cte_recursive_aggregate = 336397321; gds_gsec_cant_open_db = 336723983; gds_gsec_switches_error = 336723984; gds_gsec_no_op_spec = 336723985; Modified: firebird/trunk/src/dsql/DsqlCompilerScratch.cpp =================================================================== --- firebird/trunk/src/dsql/DsqlCompilerScratch.cpp 2014-01-27 01:09:05 UTC (rev 59079) +++ firebird/trunk/src/dsql/DsqlCompilerScratch.cpp 2014-01-27 01:09:32 UTC (rev 59080) @@ -667,8 +667,6 @@ Arg::Gds(isc_dsql_cte_wrong_clause) << input->alias << Arg::Str("HAVING")); } - // hvlad: we need also forbid any aggregate function here - // but for now i have no idea how to do it simple if (!dsqlAll) { Modified: firebird/trunk/src/dsql/pass1.cpp =================================================================== --- firebird/trunk/src/dsql/pass1.cpp 2014-01-27 01:09:05 UTC (rev 59079) +++ firebird/trunk/src/dsql/pass1.cpp 2014-01-27 01:09:32 UTC (rev 59080) @@ -1723,6 +1723,7 @@ string save_alias; RseNode* rseNode = input->as<RseNode>(); const bool isRecursive = rseNode && (rseNode->dsqlFlags & RecordSourceNode::DFLAG_RECURSIVE); + AutoSetRestore<USHORT> autoScopeLevel(&dsqlScratch->scopeLevel, dsqlScratch->scopeLevel); if (isRecursive) { @@ -1730,6 +1731,10 @@ save_alias = dsqlScratch->recursiveCtx->ctx_alias; dsqlScratch->recursiveCtx->ctx_alias = *dsqlScratch->getNextCTEAlias(); + + // ASF: We need to reset the scope level to the same value found in the non-recursive + // part of the query, to verify usage of aggregate functions correctly. See CORE-4322. + dsqlScratch->scopeLevel = dsqlScratch->recursiveCtx->ctx_scope_level; } RseNode* ret = pass1_rse_impl(dsqlScratch, input, order, rows, updateLock, flags); @@ -1877,12 +1882,34 @@ rse->dsqlSelectList = pass1_sel_list(dsqlScratch, selectList); --dsqlScratch->inSelectList; + if (inputRse->dsqlFlags & RecordSourceNode::DFLAG_RECURSIVE) + { + if (Aggregate2Finder::find(dsqlScratch->scopeLevel, FIELD_MATCH_TYPE_EQUAL, false, + rse->dsqlSelectList)) + { + // Recursive member of CTE cannot use aggregate function + ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) << + Arg::Gds(isc_dsql_cte_recursive_aggregate)); + } + } + // Process ORDER clause, if any if (order) { ++dsqlScratch->inOrderByClause; rse->dsqlOrder = PASS1_sort(dsqlScratch, order, selectList); --dsqlScratch->inOrderByClause; + + if (inputRse->dsqlFlags & RecordSourceNode::DFLAG_RECURSIVE) + { + if (Aggregate2Finder::find(dsqlScratch->scopeLevel, FIELD_MATCH_TYPE_EQUAL, false, + rse->dsqlOrder)) + { + // Recursive member of CTE cannot use aggregate function + ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) << + Arg::Gds(isc_dsql_cte_recursive_aggregate)); + } + } } // A GROUP BY, HAVING, or any aggregate function in the select list Modified: firebird/trunk/src/include/gen/codetext.h =================================================================== --- firebird/trunk/src/include/gen/codetext.h 2014-01-27 01:09:05 UTC (rev 59079) +++ firebird/trunk/src/include/gen/codetext.h 2014-01-27 01:09:32 UTC (rev 59080) @@ -1117,6 +1117,7 @@ {"dsql_alter_user_failed", 336397318}, {"dsql_grant_failed", 336397319}, {"dsql_revoke_failed", 336397320}, + {"dsql_cte_recursive_aggregate", 336397321}, {"gsec_cant_open_db", 336723983}, {"gsec_switches_error", 336723984}, {"gsec_no_op_spec", 336723985}, Modified: firebird/trunk/src/include/gen/iberror.h =================================================================== --- firebird/trunk/src/include/gen/iberror.h 2014-01-27 01:09:05 UTC (rev 59079) +++ firebird/trunk/src/include/gen/iberror.h 2014-01-27 01:09:32 UTC (rev 59080) @@ -1151,6 +1151,7 @@ const ISC_STATUS isc_dsql_alter_user_failed = 336397318L; const ISC_STATUS isc_dsql_grant_failed = 336397319L; const ISC_STATUS isc_dsql_revoke_failed = 336397320L; +const ISC_STATUS isc_dsql_cte_recursive_aggregate = 336397321L; const ISC_STATUS isc_gsec_cant_open_db = 336723983L; const ISC_STATUS isc_gsec_switches_error = 336723984L; const ISC_STATUS isc_gsec_no_op_spec = 336723985L; @@ -1252,7 +1253,7 @@ const ISC_STATUS isc_trace_switch_param_miss = 337182758L; const ISC_STATUS isc_trace_param_act_notcompat = 337182759L; const ISC_STATUS isc_trace_mandatory_switch_miss = 337182760L; -const ISC_STATUS isc_err_max = 1196; +const ISC_STATUS isc_err_max = 1197; #else /* c definitions */ @@ -2373,6 +2374,7 @@ #define isc_dsql_alter_user_failed 336397318L #define isc_dsql_grant_failed 336397319L #define isc_dsql_revoke_failed 336397320L +#define isc_dsql_cte_recursive_aggregate 336397321L #define isc_gsec_cant_open_db 336723983L #define isc_gsec_switches_error 336723984L #define isc_gsec_no_op_spec 336723985L @@ -2474,7 +2476,7 @@ #define isc_trace_switch_param_miss 337182758L #define isc_trace_param_act_notcompat 337182759L #define isc_trace_mandatory_switch_miss 337182760L -#define isc_err_max 1196 +#define isc_err_max 1197 #endif Modified: firebird/trunk/src/include/gen/msgs.h =================================================================== --- firebird/trunk/src/include/gen/msgs.h 2014-01-27 01:09:05 UTC (rev 59079) +++ firebird/trunk/src/include/gen/msgs.h 2014-01-27 01:09:32 UTC (rev 59080) @@ -1120,6 +1120,7 @@ {336397318, "ALTER USER @1 failed"}, /* dsql_alter_user_failed */ {336397319, "GRANT failed"}, /* dsql_grant_failed */ {336397320, "REVOKE failed"}, /* dsql_revoke_failed */ + {336397321, "Recursive member of CTE cannot use aggregate or window function"}, /* dsql_cte_recursive_aggregate */ {336723983, "unable to open database"}, /* gsec_cant_open_db */ {336723984, "error in switch specifications"}, /* gsec_switches_error */ {336723985, "no operation specified"}, /* gsec_no_op_spec */ Modified: firebird/trunk/src/include/gen/sql_code.h =================================================================== --- firebird/trunk/src/include/gen/sql_code.h 2014-01-27 01:09:05 UTC (rev 59079) +++ firebird/trunk/src/include/gen/sql_code.h 2014-01-27 01:09:32 UTC (rev 59080) @@ -1116,6 +1116,7 @@ {336397318, -901}, /* 1030 dsql_alter_user_failed */ {336397319, -901}, /* 1031 dsql_grant_failed */ {336397320, -901}, /* 1032 dsql_revoke_failed */ + {336397321, -104}, /* 1033 dsql_cte_recursive_aggregate */ {336723983, -901}, /* 15 gsec_cant_open_db */ {336723984, -901}, /* 16 gsec_switches_error */ {336723985, -901}, /* 17 gsec_no_op_spec */ Modified: firebird/trunk/src/include/gen/sql_state.h =================================================================== --- firebird/trunk/src/include/gen/sql_state.h 2014-01-27 01:09:05 UTC (rev 59079) +++ firebird/trunk/src/include/gen/sql_state.h 2014-01-27 01:09:32 UTC (rev 59080) @@ -1116,6 +1116,7 @@ {336397318, "42000"}, // 1030 dsql_alter_user_failed {336397319, "42000"}, // 1031 dsql_grant_failed {336397320, "42000"}, // 1032 dsql_revoke_failed + {336397321, "42000"}, // 1033 dsql_cte_recursive_aggregate {336723983, "00000"}, // 15 gsec_cant_open_db {336723984, "00000"}, // 16 gsec_switches_error {336723985, "00000"}, // 17 gsec_no_op_spec Modified: firebird/trunk/src/msgs/facilities2.sql =================================================================== --- firebird/trunk/src/msgs/facilities2.sql 2014-01-27 01:09:05 UTC (rev 59079) +++ firebird/trunk/src/msgs/facilities2.sql 2014-01-27 01:09:32 UTC (rev 59080) @@ -10,7 +10,7 @@ ('1996-11-07 13:39:40', 'INSTALL', 10, 1) ('1996-11-07 13:38:41', 'TEST', 11, 4) ('2012-06-23 05:40:21', 'GBAK', 12, 352) -('2012-02-18 20:00:00', 'SQLERR', 13, 1033) +('2014-01-26 23:00:00', 'SQLERR', 13, 1034) ('1996-11-07 13:38:42', 'SQLWARN', 14, 613) ('2006-09-10 03:04:31', 'JRD_BUGCHK', 15, 307) ('2014-01-13 15:41:16', 'ISQL', 17, 184) Modified: firebird/trunk/src/msgs/messages2.sql =================================================================== --- firebird/trunk/src/msgs/messages2.sql 2014-01-27 01:09:05 UTC (rev 59079) +++ firebird/trunk/src/msgs/messages2.sql 2014-01-27 01:09:32 UTC (rev 59080) @@ -2551,6 +2551,7 @@ ('dsql_alter_user_failed', 'getMainErrorCode', 'DdlNodes.h', NULL, 13, 1030, NULL, 'ALTER USER @1 failed', NULL, NULL); ('dsql_grant_failed', 'getMainErrorCode', 'DdlNodes.h', NULL, 13, 1031, NULL, 'GRANT failed', NULL, NULL); ('dsql_revoke_failed', 'getMainErrorCode', 'DdlNodes.h', NULL, 13, 1032, NULL, 'REVOKE failed', NULL, NULL); +('dsql_cte_recursive_aggregate', 'pass1_rse_impl', 'dsql.cpp', NULL, 13, 1033, NULL, 'Recursive member of CTE cannot use aggregate or window function', NULL, NULL); -- SQLWARN (NULL, NULL, NULL, NULL, 14, 100, NULL, 'Row not found for fetch, update or delete, or the result of a query is an empty table.', NULL, NULL); (NULL, NULL, NULL, NULL, 14, 101, NULL, 'segment buffer length shorter than expected', NULL, NULL); Modified: firebird/trunk/src/msgs/system_errors2.sql =================================================================== --- firebird/trunk/src/msgs/system_errors2.sql 2014-01-27 01:09:05 UTC (rev 59079) +++ firebird/trunk/src/msgs/system_errors2.sql 2014-01-27 01:09:32 UTC (rev 59080) @@ -1110,6 +1110,7 @@ (-901, '42', '000', 13, 1030, 'dsql_alter_user_failed', NULL, NULL); (-901, '42', '000', 13, 1031, 'dsql_grant_failed', NULL, NULL); (-901, '42', '000', 13, 1032, 'dsql_revoke_failed', NULL, NULL); +(-104, '42', '000', 13, 1033, 'dsql_cte_recursive_aggregate', NULL, NULL) -- GSEC (-901, '00', '000', 18, 15, 'gsec_cant_open_db', NULL, NULL) (-901, '00', '000', 18, 16, 'gsec_switches_error', NULL, NULL) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-28 00:50:23
|
Revision: 59083 http://sourceforge.net/p/firebird/code/59083 Author: firebirds Date: 2014-01-28 00:50:20 +0000 (Tue, 28 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-27 16:47:43 UTC (rev 59082) +++ firebird/trunk/ChangeLog 2014-01-28 00:50:20 UTC (rev 59083) @@ -1,3 +1,33 @@ + 2014-01-27 16:47 alexpeshkoff + M src/include/firebird/Utl.h + M src/isql/show.epp + M src/yvalve/utl.cpp + M src/yvalve/utl_proto.h +Renamed it once more + + 2014-01-27 07:14 alexpeshkoff + M doc/sql.extensions/README.user_management +Doc enhancement + + 2014-01-27 01:09 asfernandes + M lang_helpers/gds_codes.ftn + M lang_helpers/gds_codes.pas + M src/dsql/DsqlCompilerScratch.cpp + M src/dsql/pass1.cpp + M src/include/gen/codetext.h + M src/include/gen/iberror.h + M src/include/gen/msgs.h + M src/include/gen/sql_code.h + M src/include/gen/sql_state.h + M src/msgs/facilities2.sql + M src/msgs/messages2.sql + M src/msgs/system_errors2.sql +Fixed CORE-4322 - Engine crashes when use aggregate or window functions in recursive query. Vlad, please review. + + 2014-01-27 01:09 asfernandes + M src/jrd/idx.cpp +Misc. + 2014-01-26 15:27 dimitr M src/jrd/Optimizer.cpp Front-ported my recent commit re. possibly slow restore. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-27 16:47:43 UTC (rev 59082) +++ firebird/trunk/src/jrd/build_no.h 2014-01-28 00:50:20 UTC (rev 59083) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30860 + FORMAL BUILD NUMBER:30864 */ -#define PRODUCT_VER_STRING "3.0.0.30860" -#define FILE_VER_STRING "WI-T3.0.0.30860" -#define LICENSE_VER_STRING "WI-T3.0.0.30860" -#define FILE_VER_NUMBER 3, 0, 0, 30860 +#define PRODUCT_VER_STRING "3.0.0.30864" +#define FILE_VER_STRING "WI-T3.0.0.30864" +#define LICENSE_VER_STRING "WI-T3.0.0.30864" +#define FILE_VER_NUMBER 3, 0, 0, 30864 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30860" +#define FB_BUILD_NO "30864" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-27 16:47:43 UTC (rev 59082) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-28 00:50:20 UTC (rev 59083) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30860 +BuildNum=30864 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-30 00:45:07
|
Revision: 59087 http://sourceforge.net/p/firebird/code/59087 Author: firebirds Date: 2014-01-30 00:45:01 +0000 (Thu, 30 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-29 15:36:09 UTC (rev 59086) +++ firebird/trunk/ChangeLog 2014-01-30 00:45:01 UTC (rev 59087) @@ -1,3 +1,11 @@ + 2014-01-29 15:36 asfernandes + M src/jrd/UserManagement.cpp +Fixed CORE-4301 - Non-ASCII data in SEC$USERS is not read correctly. + + 2014-01-29 15:35 asfernandes + M src/dsql/parse.y +Misc. + 2014-01-27 16:47 alexpeshkoff M src/include/firebird/Utl.h M src/isql/show.epp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-29 15:36:09 UTC (rev 59086) +++ firebird/trunk/src/jrd/build_no.h 2014-01-30 00:45:01 UTC (rev 59087) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30864 + FORMAL BUILD NUMBER:30866 */ -#define PRODUCT_VER_STRING "3.0.0.30864" -#define FILE_VER_STRING "WI-T3.0.0.30864" -#define LICENSE_VER_STRING "WI-T3.0.0.30864" -#define FILE_VER_NUMBER 3, 0, 0, 30864 +#define PRODUCT_VER_STRING "3.0.0.30866" +#define FILE_VER_STRING "WI-T3.0.0.30866" +#define LICENSE_VER_STRING "WI-T3.0.0.30866" +#define FILE_VER_NUMBER 3, 0, 0, 30866 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30864" +#define FB_BUILD_NO "30866" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-29 15:36:09 UTC (rev 59086) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-30 00:45:01 UTC (rev 59087) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30864 +BuildNum=30866 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-01-31 00:27:04
|
Revision: 59091 http://sourceforge.net/p/firebird/code/59091 Author: firebirds Date: 2014-01-31 00:26:57 +0000 (Fri, 31 Jan 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-30 14:53:19 UTC (rev 59090) +++ firebird/trunk/ChangeLog 2014-01-31 00:26:57 UTC (rev 59091) @@ -1,3 +1,11 @@ + 2014-01-30 14:52 alexpeshkoff + M src/qli/exe.cpp +Fixed CORE-4327: Error in QLI when copying NULL blobs between databases + + 2014-01-30 09:11 alexpeshkoff + M src/dsql/parse.y +Fixed CORE-4326: Keyword SET should not be required in ALTER USER statement + 2014-01-29 15:36 asfernandes M src/jrd/UserManagement.cpp Fixed CORE-4301 - Non-ASCII data in SEC$USERS is not read correctly. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-30 14:53:19 UTC (rev 59090) +++ firebird/trunk/src/jrd/build_no.h 2014-01-31 00:26:57 UTC (rev 59091) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30866 + FORMAL BUILD NUMBER:30868 */ -#define PRODUCT_VER_STRING "3.0.0.30866" -#define FILE_VER_STRING "WI-T3.0.0.30866" -#define LICENSE_VER_STRING "WI-T3.0.0.30866" -#define FILE_VER_NUMBER 3, 0, 0, 30866 +#define PRODUCT_VER_STRING "3.0.0.30868" +#define FILE_VER_STRING "WI-T3.0.0.30868" +#define LICENSE_VER_STRING "WI-T3.0.0.30868" +#define FILE_VER_NUMBER 3, 0, 0, 30868 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30866" +#define FB_BUILD_NO "30868" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-30 14:53:19 UTC (rev 59090) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-01-31 00:26:57 UTC (rev 59091) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30866 +BuildNum=30868 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ale...@us...> - 2014-01-31 14:43:28
|
Revision: 59094 http://sourceforge.net/p/firebird/code/59094 Author: alexpeshkoff Date: 2014-01-31 14:43:25 +0000 (Fri, 31 Jan 2014) Log Message: ----------- Misc enhancements in .conf parser and *.conf.in files Modified Paths: -------------- firebird/trunk/builds/install/misc/databases.conf.in firebird/trunk/builds/install/misc/firebird.conf.in firebird/trunk/src/common/config/config_file.cpp firebird/trunk/src/common/config/config_file.h firebird/trunk/src/common/os/path_utils.h firebird/trunk/src/common/os/posix/path_utils.cpp firebird/trunk/src/common/os/win32/path_utils.cpp Modified: firebird/trunk/builds/install/misc/databases.conf.in =================================================================== --- firebird/trunk/builds/install/misc/databases.conf.in 2014-01-31 00:55:25 UTC (rev 59093) +++ firebird/trunk/builds/install/misc/databases.conf.in 2014-01-31 14:43:25 UTC (rev 59094) @@ -17,14 +17,14 @@ # # Example Database: # -employee.fdb = $(dir_sampledb)/employee.fdb -employee = $(dir_sampledb)/employee.fdb +employee.fdb = $(dir_sampleDb)/employee.fdb +employee = $(dir_sampleDb)/employee.fdb # # Master security database specific setup. # Do not remove it until you understand well what are you doing! # -security.db = $(root)/security3.fdb +security.db = $(dir_secDb)/security3.fdb { RemoteAccess = false } Modified: firebird/trunk/builds/install/misc/firebird.conf.in =================================================================== --- firebird/trunk/builds/install/misc/firebird.conf.in 2014-01-31 00:55:25 UTC (rev 59093) +++ firebird/trunk/builds/install/misc/firebird.conf.in 2014-01-31 14:43:25 UTC (rev 59094) @@ -58,18 +58,20 @@ # ------------------ # There is a number of predefined macro commands, that can be used in config # files where directory name is needed. They are available using $(name) syntax. -# The complete list of the as follows: +# The complete list of them as follows: # root - root directory of firebird instance # install - directory where firebird is installed # this - directory where current configuration file is located # dir_conf - directory where firebird.conf and databases.conf are located -# dir_secdb - directory where default security database is located +# dir_secDb - directory where default security database is located # dir_plugins - directory where plugins are located # dir_udf - directory where UDFs are located by default # dir_sample - directory where samples are located -# dir_sampledb - directory where sample DB (employee.fdb) is located +# dir_sampleDb - directory where sample DB (employee.fdb) is located # dir_intl - directory where international modules are located # dir_msg - directory where messages file (firebird.msg) is located +# Like the rest of config internals macros are case-insensitive. +# Capital letters here are used only for better human readability. # # # Includes @@ -121,6 +123,24 @@ # ---------------------------- +# Ability to access databases remotely +# +# RemoteAccess may be true or false (1/0, Yes/No) - it's boolean value. +# By default RemoteAccess to all databases except security DB is enabled. +# If you plan to use more than one dedicated security database it's +# recommended to disable remote access to them in databases.conf. +# However (as an additional method to have secure enhanced firebird +# installation) one can disable remote access globally and re-enable +# in databases.conf only for specific databases. +# +# Per-database configurable. +# +# Type: boolean +# +#RemoteAccess = true + + +# ---------------------------- # External File Paths/Directories # # ExternalFileAccess may be None, Full or Restrict. If you choose @@ -727,7 +747,7 @@ # # Type: string (pathname) # -#SecurityDatabase = $(root)/security3.fdb +#SecurityDatabase = $(dir_secDb)/security3.fdb # ============================== Modified: firebird/trunk/src/common/config/config_file.cpp =================================================================== --- firebird/trunk/src/common/config/config_file.cpp 2014-01-31 00:55:25 UTC (rev 59093) +++ firebird/trunk/src/common/config/config_file.cpp 2014-01-31 14:43:25 UTC (rev 59094) @@ -262,7 +262,7 @@ * Parse line, taking quotes into account */ -ConfigFile::LineType ConfigFile::parseLine(const char* fileName, const String& input, KeyType& key, String& value) +ConfigFile::LineType ConfigFile::parseLine(const char* fileName, const String& input, Parameter& par) { int inString = 0; String::size_type valStart = 0; @@ -276,7 +276,7 @@ switch (input[n]) { case '"': - if (key.isEmpty()) // quoted string to the left of = doesn't make sense + if (par.name.isEmpty()) // quoted string to the left of = doesn't make sense return LINE_BAD; if (inString >= 2) // one more quote after quoted string doesn't make sense return LINE_BAD; @@ -284,11 +284,11 @@ break; case '=': - if (key.isEmpty()) + if (par.name.isEmpty()) { - key = input.substr(0, n).ToNoCaseString(); - key.rtrim(" \t\r"); - if (key.isEmpty()) // not good - no key + par.name = input.substr(0, n).ToNoCaseString(); + par.name.rtrim(" \t\r"); + if (par.name.isEmpty()) // not good - no key return LINE_BAD; valStart = n + 1; } @@ -306,15 +306,15 @@ case ' ': case '\t': - if (n == incLen && key.isEmpty()) + if (n == incLen && par.name.isEmpty()) { KeyType inc = input.substr(0, n).ToNoCaseString(); if (inc == include) { - value = input.substr(n); - value.alltrim(" \t\r"); + par.value = input.substr(n); + par.value.alltrim(" \t\r"); - if (!macroParse(value, fileName)) + if (!macroParse(par.value, fileName)) { return LINE_BAD; } @@ -331,9 +331,16 @@ { if (inString != 1) { - if (input[n] == '}') // Subconf close mark not expected + if (input[n] == '}') { - return LINE_BAD; + String s = input.substr(n + 1); + s.ltrim(" \t\r"); + if (s.hasData() && s[0] != '#') + { + return LINE_BAD; + } + par.value = input.substr(0, n); + return LINE_END_SUB; } hasSub = true; @@ -354,21 +361,21 @@ if (inString == 1) // If we are still inside a string, it's error return LINE_BAD; - if (key.isEmpty()) + if (par.name.isEmpty()) { - key = input.substr(0, eol).ToNoCaseString(); - key.rtrim(" \t\r"); - value.erase(); + par.name = input.substr(0, eol).ToNoCaseString(); + par.name.rtrim(" \t\r"); + par.value.erase(); } else { - value = input.substr(valStart, eol - valStart); - value.alltrim(" \t\r"); - value.alltrim("\""); + par.value = input.substr(valStart, eol - valStart); + par.value.alltrim(" \t\r"); + par.value.alltrim("\""); } // Now expand macros in value - if (!macroParse(value, fileName)) + if (!macroParse(par.value, fileName)) { return LINE_BAD; } @@ -399,6 +406,9 @@ ++subTo; // Avoid double slashes in pathnames + PathUtils::setDirIterator(value.begin()); + PathUtils::setDirIterator(macro.begin()); + if (subFrom > 0 && value[subFrom - 1] == PathUtils::dir_sep && macro.length() > 0 && macro[0] == PathUtils::dir_sep) { @@ -585,7 +595,7 @@ Parameter current; current.line = line; - switch (parseLine(streamName, inputLine, current.name, current.value)) + switch (parseLine(streamName, inputLine, current)) { case LINE_BAD: badLine(streamName, inputLine); @@ -616,18 +626,23 @@ SubStream subStream(stream->getFileName()); while (stream->getLine(inputLine, line)) { - if (inputLine[0] == '}') + switch(parseLine(streamName, inputLine, current)) { - String s = inputLine.substr(1); - s.ltrim(" \t\r"); - if (s.hasData() && s[0] != '#') - { - badLine(streamName, s); - return; - } + case LINE_END_SUB: + if (current.value.hasData()) + subStream.putLine(current.value, line); break; + + //case LINE_START_SUB: will be ignored at next level. Ignore here? + case LINE_BAD: + badLine(streamName, inputLine); + return; + + default: + subStream.putLine(inputLine, line); + continue; } - subStream.putLine(inputLine, line); + break; } previous->sub = FB_NEW(getPool()) Modified: firebird/trunk/src/common/config/config_file.h =================================================================== --- firebird/trunk/src/common/config/config_file.h 2014-01-31 00:55:25 UTC (rev 59093) +++ firebird/trunk/src/common/config/config_file.h 2014-01-31 14:43:25 UTC (rev 59094) @@ -124,7 +124,7 @@ bool macroParse(String& value, const char* fileName) const; private: - enum LineType {LINE_BAD, LINE_REGULAR, LINE_START_SUB, LINE_INCLUDE}; + enum LineType {LINE_BAD, LINE_REGULAR, LINE_START_SUB, LINE_END_SUB, LINE_INCLUDE}; Parameters parameters; USHORT flags; @@ -134,7 +134,7 @@ // utilities void parse(Stream* stream); - LineType parseLine(const char* fileName, const String& input, KeyType& key, String& value); + LineType parseLine(const char* fileName, const String& input, Parameter& par); bool translate(const char* fileName, const String& from, String& to) const; void badLine(const char* fileName, const String& line); void include(const char* currentFileName, const Firebird::PathName& path); Modified: firebird/trunk/src/common/os/path_utils.h =================================================================== --- firebird/trunk/src/common/os/path_utils.h 2014-01-31 00:55:25 UTC (rev 59093) +++ firebird/trunk/src/common/os/path_utils.h 2014-01-31 14:43:25 UTC (rev 59094) @@ -162,6 +162,11 @@ dir_iterator being returned. **/ static dir_iterator* newDirItr(MemoryPool&, const Firebird::PathName&); + + /** setDirIterator converts all dir iterators to one required on current + platform. + **/ + static void setDirIterator(char* path); }; #endif // JRD_OS_PATH_UTILS_H Modified: firebird/trunk/src/common/os/posix/path_utils.cpp =================================================================== --- firebird/trunk/src/common/os/posix/path_utils.cpp 2014-01-31 00:55:25 UTC (rev 59093) +++ firebird/trunk/src/common/os/posix/path_utils.cpp 2014-01-31 14:43:25 UTC (rev 59094) @@ -192,3 +192,11 @@ return access(path.c_str(), mode) == 0; } +void PathUtils::setDirIterator(char* path) +{ + for (; *path; ++path) + { + if (*path == '\\') + *path = '/'; + } +} Modified: firebird/trunk/src/common/os/win32/path_utils.cpp =================================================================== --- firebird/trunk/src/common/os/win32/path_utils.cpp 2014-01-31 00:55:25 UTC (rev 59093) +++ firebird/trunk/src/common/os/win32/path_utils.cpp 2014-01-31 14:43:25 UTC (rev 59094) @@ -186,3 +186,12 @@ return _access(path.c_str(), mode) == 0; } +void PathUtils::setDirIterator(char* path) +{ + for (; *path; ++path) + { + if (*path == '/') + *path = '\\'; + } +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2014-02-01 00:28:32
|
Revision: 59095 http://sourceforge.net/p/firebird/code/59095 Author: firebirds Date: 2014-02-01 00:28:28 +0000 (Sat, 01 Feb 2014) Log Message: ----------- nightly update Modified Paths: -------------- firebird/trunk/ChangeLog firebird/trunk/src/jrd/build_no.h firebird/trunk/src/misc/writeBuildNum.sh Modified: firebird/trunk/ChangeLog =================================================================== --- firebird/trunk/ChangeLog 2014-01-31 14:43:25 UTC (rev 59094) +++ firebird/trunk/ChangeLog 2014-02-01 00:28:28 UTC (rev 59095) @@ -1,3 +1,13 @@ + 2014-01-31 14:43 alexpeshkoff + M builds/install/misc/databases.conf.in + M builds/install/misc/firebird.conf.in + M src/common/config/config_file.cpp + M src/common/config/config_file.h + M src/common/os/path_utils.h + M src/common/os/posix/path_utils.cpp + M src/common/os/win32/path_utils.cpp +Misc enhancements in .conf parser and *.conf.in files + 2014-01-30 14:52 alexpeshkoff M src/qli/exe.cpp Fixed CORE-4327: Error in QLI when copying NULL blobs between databases Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2014-01-31 14:43:25 UTC (rev 59094) +++ firebird/trunk/src/jrd/build_no.h 2014-02-01 00:28:28 UTC (rev 59095) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:30868 + FORMAL BUILD NUMBER:30869 */ -#define PRODUCT_VER_STRING "3.0.0.30868" -#define FILE_VER_STRING "WI-T3.0.0.30868" -#define LICENSE_VER_STRING "WI-T3.0.0.30868" -#define FILE_VER_NUMBER 3, 0, 0, 30868 +#define PRODUCT_VER_STRING "3.0.0.30869" +#define FILE_VER_STRING "WI-T3.0.0.30869" +#define LICENSE_VER_STRING "WI-T3.0.0.30869" +#define FILE_VER_NUMBER 3, 0, 0, 30869 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "30868" +#define FB_BUILD_NO "30869" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Alpha 2" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2014-01-31 14:43:25 UTC (rev 59094) +++ firebird/trunk/src/misc/writeBuildNum.sh 2014-02-01 00:28:28 UTC (rev 59095) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=30868 +BuildNum=30869 NowAt=`pwd` cd `dirname $0` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |