From: <fir...@us...> - 2010-08-28 03:14:07
|
Revision: 51495 http://firebird.svn.sourceforge.net/firebird/?rev=51495&view=rev Author: firebirds Date: 2010-08-28 03:14:01 +0000 (Sat, 28 Aug 2010) 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 2010-08-27 15:14:55 UTC (rev 51494) +++ firebird/trunk/ChangeLog 2010-08-28 03:14:01 UTC (rev 51495) @@ -1,3 +1,10 @@ + 2010-08-27 15:14 asfernandes + M builds/win32/msvc10/dsql_server.vcxproj + M builds/win32/msvc10/dsql_server.vcxproj.filters + M builds/win32/msvc10/dsql_server_classic.vcxproj + M builds/win32/msvc10/dsql_server_classic.vcxproj.filters +Fix MSVC10 build + 2010-08-27 02:55 asfernandes M src/jrd/dyn.epp Fixed CORE-3109 - [Crash] isc_dql_exec_immed3_m for "create database ..." and NULL transaction Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-08-27 15:14:55 UTC (rev 51494) +++ firebird/trunk/src/jrd/build_no.h 2010-08-28 03:14:01 UTC (rev 51495) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28700 + FORMAL BUILD NUMBER:28701 */ -#define PRODUCT_VER_STRING "3.0.0.28700" -#define FILE_VER_STRING "WI-T3.0.0.28700" -#define LICENSE_VER_STRING "WI-T3.0.0.28700" -#define FILE_VER_NUMBER 3, 0, 0, 28700 +#define PRODUCT_VER_STRING "3.0.0.28701" +#define FILE_VER_STRING "WI-T3.0.0.28701" +#define LICENSE_VER_STRING "WI-T3.0.0.28701" +#define FILE_VER_NUMBER 3, 0, 0, 28701 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28700" +#define FB_BUILD_NO "28701" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-08-27 15:14:55 UTC (rev 51494) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-08-28 03:14:01 UTC (rev 51495) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28700 +BuildNum=28701 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-08-29 03:13:54
|
Revision: 51498 http://firebird.svn.sourceforge.net/firebird/?rev=51498&view=rev Author: firebirds Date: 2010-08-29 03:13:47 +0000 (Sun, 29 Aug 2010) 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 2010-08-28 12:41:51 UTC (rev 51497) +++ firebird/trunk/ChangeLog 2010-08-29 03:13:47 UTC (rev 51498) @@ -1,3 +1,11 @@ + 2010-08-28 12:41 dimitr + M src/jrd/opt.cpp +Fixed CORE-2155: Join of SP with view or table may fail with 'No current record for fetch operation'. + + 2010-08-28 08:52 dimitr + M src/jrd/cmp.cpp +Fixed the engine crash caused by the recent refactoring. + 2010-08-27 15:14 asfernandes M builds/win32/msvc10/dsql_server.vcxproj M builds/win32/msvc10/dsql_server.vcxproj.filters Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-08-28 12:41:51 UTC (rev 51497) +++ firebird/trunk/src/jrd/build_no.h 2010-08-29 03:13:47 UTC (rev 51498) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28701 + FORMAL BUILD NUMBER:28703 */ -#define PRODUCT_VER_STRING "3.0.0.28701" -#define FILE_VER_STRING "WI-T3.0.0.28701" -#define LICENSE_VER_STRING "WI-T3.0.0.28701" -#define FILE_VER_NUMBER 3, 0, 0, 28701 +#define PRODUCT_VER_STRING "3.0.0.28703" +#define FILE_VER_STRING "WI-T3.0.0.28703" +#define LICENSE_VER_STRING "WI-T3.0.0.28703" +#define FILE_VER_NUMBER 3, 0, 0, 28703 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28701" +#define FB_BUILD_NO "28703" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-08-28 12:41:51 UTC (rev 51497) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-08-29 03:13:47 UTC (rev 51498) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28701 +BuildNum=28703 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-08-30 03:14:14
|
Revision: 51502 http://firebird.svn.sourceforge.net/firebird/?rev=51502&view=rev Author: firebirds Date: 2010-08-30 03:14:08 +0000 (Mon, 30 Aug 2010) 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 2010-08-29 20:20:19 UTC (rev 51501) +++ firebird/trunk/ChangeLog 2010-08-30 03:14:08 UTC (rev 51502) @@ -1,3 +1,44 @@ + 2010-08-29 20:20 asfernandes + M src/jrd/Optimizer.cpp + M src/jrd/Optimizer.h + M src/jrd/RecordSourceNodes.cpp + M src/jrd/RecordSourceNodes.h + M src/jrd/exe.h + M src/jrd/nod.h + M src/jrd/opt.cpp + M src/jrd/par.cpp + M src/misc/blrtable.cpp +Refactor plan nodes to PlanNode + + 2010-08-29 18:25 asfernandes + M src/jrd/exe.cpp + M src/jrd/exe.h + M src/jrd/nod.h +Cleanup + + 2010-08-29 18:20 asfernandes + M src/dsql/Visitors.h + M src/jrd/Optimizer.cpp + M src/jrd/Optimizer.h + M src/jrd/RecordSourceNodes.cpp + M src/jrd/RecordSourceNodes.h + M src/jrd/cmp.cpp + M src/jrd/exe.h + M src/jrd/nod.h + M src/jrd/opt.cpp + M src/jrd/opt_proto.h + M src/jrd/par.cpp + M src/jrd/par_proto.h + M src/jrd/recsrc/AggregatedStream.cpp + M src/jrd/recsrc/HashJoin.cpp + M src/jrd/recsrc/MergeJoin.cpp + M src/jrd/recsrc/RecordSource.h + M src/jrd/recsrc/RecursiveStream.cpp + M src/jrd/recsrc/Union.cpp + M src/jrd/recsrc/WindowedStream.cpp + M src/misc/blrtable.cpp +Refactor nod_map and nod_sort to type-safe MapNode and SortNode + 2010-08-28 12:41 dimitr M src/jrd/opt.cpp Fixed CORE-2155: Join of SP with view or table may fail with 'No current record for fetch operation'. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-08-29 20:20:19 UTC (rev 51501) +++ firebird/trunk/src/jrd/build_no.h 2010-08-30 03:14:08 UTC (rev 51502) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28703 + FORMAL BUILD NUMBER:28706 */ -#define PRODUCT_VER_STRING "3.0.0.28703" -#define FILE_VER_STRING "WI-T3.0.0.28703" -#define LICENSE_VER_STRING "WI-T3.0.0.28703" -#define FILE_VER_NUMBER 3, 0, 0, 28703 +#define PRODUCT_VER_STRING "3.0.0.28706" +#define FILE_VER_STRING "WI-T3.0.0.28706" +#define LICENSE_VER_STRING "WI-T3.0.0.28706" +#define FILE_VER_NUMBER 3, 0, 0, 28706 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28703" +#define FB_BUILD_NO "28706" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-08-29 20:20:19 UTC (rev 51501) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-08-30 03:14:08 UTC (rev 51502) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28703 +BuildNum=28706 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <asf...@us...> - 2010-08-31 00:12:26
|
Revision: 51504 http://firebird.svn.sourceforge.net/firebird/?rev=51504&view=rev Author: asfernandes Date: 2010-08-31 00:12:20 +0000 (Tue, 31 Aug 2010) Log Message: ----------- Misc Modified Paths: -------------- firebird/trunk/doc/README.build.msvc.html firebird/trunk/src/jrd/RecordSourceNodes.cpp Modified: firebird/trunk/doc/README.build.msvc.html =================================================================== --- firebird/trunk/doc/README.build.msvc.html 2010-08-30 15:39:50 UTC (rev 51503) +++ firebird/trunk/doc/README.build.msvc.html 2010-08-31 00:12:20 UTC (rev 51504) @@ -18,7 +18,7 @@ <h3>0.-Introduction</h3> <blockquote> -<p>There are two VisualStudio builds, msvc8 and msvc9. The msvc8 build is used for the official build of Firebird in win32.</p> +<p>There are two VisualStudio builds, msvc8 and msvc9. The msvc8 build is used for the official build of Firebird in Windows.</p> <p>Under the directory where you put Firebird2 sources you will see the following directories</p> <ul> <li>builds</li> @@ -80,13 +80,13 @@ <h4>2.1.-Visual Studio</h4> <ol> <li>Install VisualStudio 8/9</li> -<li>You can compile it with <a href=http://www.microsoft.com/express/downloads/#Visual_Studio_2008_Express_Downloads>Visual C++ 2008 Studio Express</a> but it will not be able to build the <a href=http://firebird.1100200.n4.nabble.com/building-head-with-visual-studio-2008-vc9-td1127168.html>control panel applet</a> but for the firebird server and the rest of utilities building is ok<br> +<li>You can compile it with <a href=http://www.microsoft.com/express/downloads/#Visual_Studio_2008_Express_Downloads>Visual C++ 2008 Studio Express</a> but it will not be able to build the <a href=http://firebird.1100200.n4.nabble.com/building-head-with-visual-studio-2008-vc9-td1127168.html>control panel applet</a> but for the Firebird server and the rest of utilities building is ok<br> </li> </ol> <h4>2.2.-Sed</h4> <ol> -<li class="level1"><div class="li"> Download <a href="http://sourceforge.net/projects/gnuwin32/files/sed/4.2-1/sed-4.2-1-setup.exe/download" class="urlextern" title="http://sourceforge.net/projects/gnuwin32/files/sed/4.2-1/sed-4.2-1-setup.exe/download" rel="nofollow">Sed setup</a> from <a href="http://gnuwin32.sourceforge.net/packages/sed.htm" class="urlextern" title="http://gnuwin32.sourceforge.net/packages/sed.htm" rel="nofollow">GnuWin32 project</a> I had to run the setup and i extract into c:\gnuwin32 </div> +<li class="level1"><div class="li"> Download <a href="http://sourceforge.net/projects/gnuwin32/files/sed/4.2-1/sed-4.2-1-setup.exe/download" class="urlextern" title="http://sourceforge.net/projects/gnuwin32/files/sed/4.2-1/sed-4.2-1-setup.exe/download" rel="nofollow">Sed setup</a> from <a href="http://gnuwin32.sourceforge.net/packages/sed.htm" class="urlextern" title="http://gnuwin32.sourceforge.net/packages/sed.htm" rel="nofollow">GnuWin32 project</a> I had to run the setup and i extract into c:\gnuwin32 </div> </li> <li class="level1"><div class="li"> Add sed c:\gnuwin32\bin to the PATH environment variable , test it from a new console if it works by typing sed it should show you something abut gnu sed help</div> </li> @@ -96,7 +96,7 @@ <li>Run the Installer for Innosetup 5 that you downloaded from above setup-5.3.xx.exe</li> <li>Run the Innosetup pack Installer ispack-5.3.10.exe -with the default options (next , next , next)</li> +with the default options (next, next, next)</li> <ol> </blockquote> <h3>4.- Building</h3> @@ -104,7 +104,7 @@ <h4>4.1.-Standard build</h4> <ol> -<li>Eliminate the fb2control from firebird2 solution if you are using Visual Studio Express (doesn't support MFC) and it's only the control pannel applet and try to build it , it should give you no errors when you build the solution.</li> +<li>Eliminate the fb2control from firebird2 solution if you are using Visual Studio Express (doesn't support MFC) and it's only the control pannel applet and try to build it, it should give you no errors when you build the solution.</li> <li>Open a command line window.</li> <li>Go to the builds\win32 directory.</li> <li>Run the following batches in order (your version of VisualStudio is detected automatically)</li> Modified: firebird/trunk/src/jrd/RecordSourceNodes.cpp =================================================================== --- firebird/trunk/src/jrd/RecordSourceNodes.cpp 2010-08-30 15:39:50 UTC (rev 51503) +++ firebird/trunk/src/jrd/RecordSourceNodes.cpp 2010-08-31 00:12:20 UTC (rev 51504) @@ -1253,7 +1253,7 @@ *tdbb->getDefaultPool()); newSource->rse = rse->copy(tdbb, copier); - + for (ObjectsArray<Partition>::iterator inputPartition = partitions.begin(); inputPartition != partitions.end(); ++inputPartition) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-08-31 03:14:36
|
Revision: 51506 http://firebird.svn.sourceforge.net/firebird/?rev=51506&view=rev Author: firebirds Date: 2010-08-31 03:14:29 +0000 (Tue, 31 Aug 2010) 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 2010-08-31 00:20:33 UTC (rev 51505) +++ firebird/trunk/ChangeLog 2010-08-31 03:14:29 UTC (rev 51506) @@ -1,3 +1,27 @@ + 2010-08-31 00:20 asfernandes + M src/jrd/Optimizer.cpp + M src/jrd/Optimizer.h + M src/jrd/RecordSourceNodes.h + M src/jrd/evl.cpp + M src/jrd/evl_proto.h + M src/jrd/exe.h + M src/jrd/nod.h + M src/jrd/opt.cpp + M src/jrd/recsrc/BitmapTableScan.cpp + M src/jrd/recsrc/IndexTableScan.cpp + M src/jrd/recsrc/RecordSource.cpp + M src/jrd/recsrc/RecordSource.h +Refactor nod_index and nod_bit_* to InversionNode + + 2010-08-31 00:12 asfernandes + M doc/README.build.msvc.html + M src/jrd/RecordSourceNodes.cpp +Misc + + 2010-08-30 15:39 asfernandes + M src/jrd/nod.h +Small cleanup + 2010-08-29 20:20 asfernandes M src/jrd/Optimizer.cpp M src/jrd/Optimizer.h Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-08-31 00:20:33 UTC (rev 51505) +++ firebird/trunk/src/jrd/build_no.h 2010-08-31 03:14:29 UTC (rev 51506) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28706 + FORMAL BUILD NUMBER:28709 */ -#define PRODUCT_VER_STRING "3.0.0.28706" -#define FILE_VER_STRING "WI-T3.0.0.28706" -#define LICENSE_VER_STRING "WI-T3.0.0.28706" -#define FILE_VER_NUMBER 3, 0, 0, 28706 +#define PRODUCT_VER_STRING "3.0.0.28709" +#define FILE_VER_STRING "WI-T3.0.0.28709" +#define LICENSE_VER_STRING "WI-T3.0.0.28709" +#define FILE_VER_NUMBER 3, 0, 0, 28709 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28706" +#define FB_BUILD_NO "28709" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-08-31 00:20:33 UTC (rev 51505) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-08-31 03:14:29 UTC (rev 51506) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28706 +BuildNum=28709 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-09-01 03:15:25
|
Revision: 51508 http://firebird.svn.sourceforge.net/firebird/?rev=51508&view=rev Author: firebirds Date: 2010-09-01 03:15:19 +0000 (Wed, 01 Sep 2010) 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 2010-08-31 11:17:06 UTC (rev 51507) +++ firebird/trunk/ChangeLog 2010-09-01 03:15:19 UTC (rev 51508) @@ -1,3 +1,8 @@ + 2010-08-31 11:17 dimitr + M builds/win32/msvc9/dsql_server.vcproj + M builds/win32/msvc9/dsql_server_classic.vcproj +Fixed MSVC9 build. + 2010-08-31 00:20 asfernandes M src/jrd/Optimizer.cpp M src/jrd/Optimizer.h Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-08-31 11:17:06 UTC (rev 51507) +++ firebird/trunk/src/jrd/build_no.h 2010-09-01 03:15:19 UTC (rev 51508) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28709 + FORMAL BUILD NUMBER:28710 */ -#define PRODUCT_VER_STRING "3.0.0.28709" -#define FILE_VER_STRING "WI-T3.0.0.28709" -#define LICENSE_VER_STRING "WI-T3.0.0.28709" -#define FILE_VER_NUMBER 3, 0, 0, 28709 +#define PRODUCT_VER_STRING "3.0.0.28710" +#define FILE_VER_STRING "WI-T3.0.0.28710" +#define LICENSE_VER_STRING "WI-T3.0.0.28710" +#define FILE_VER_NUMBER 3, 0, 0, 28710 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28709" +#define FB_BUILD_NO "28710" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-08-31 11:17:06 UTC (rev 51507) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-09-01 03:15:19 UTC (rev 51508) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28709 +BuildNum=28710 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-09-02 03:14:00
|
Revision: 51512 http://firebird.svn.sourceforge.net/firebird/?rev=51512&view=rev Author: firebirds Date: 2010-09-02 03:13:54 +0000 (Thu, 02 Sep 2010) 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 2010-09-01 15:55:32 UTC (rev 51511) +++ firebird/trunk/ChangeLog 2010-09-02 03:13:54 UTC (rev 51512) @@ -1,3 +1,11 @@ + 2010-09-01 15:55 asfernandes + M src/jrd/trig.h +Fixed CORE-3101 - Cannot alter the domain after migrating from older versions + + 2010-09-01 15:54 asfernandes + M src/jrd/jrd.h +Fix warning + 2010-08-31 11:17 dimitr M builds/win32/msvc9/dsql_server.vcproj M builds/win32/msvc9/dsql_server_classic.vcproj Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-09-01 15:55:32 UTC (rev 51511) +++ firebird/trunk/src/jrd/build_no.h 2010-09-02 03:13:54 UTC (rev 51512) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28710 + FORMAL BUILD NUMBER:28712 */ -#define PRODUCT_VER_STRING "3.0.0.28710" -#define FILE_VER_STRING "WI-T3.0.0.28710" -#define LICENSE_VER_STRING "WI-T3.0.0.28710" -#define FILE_VER_NUMBER 3, 0, 0, 28710 +#define PRODUCT_VER_STRING "3.0.0.28712" +#define FILE_VER_STRING "WI-T3.0.0.28712" +#define LICENSE_VER_STRING "WI-T3.0.0.28712" +#define FILE_VER_NUMBER 3, 0, 0, 28712 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28710" +#define FB_BUILD_NO "28712" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-09-01 15:55:32 UTC (rev 51511) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-09-02 03:13:54 UTC (rev 51512) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28710 +BuildNum=28712 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <asf...@us...> - 2010-09-04 21:36:50
|
Revision: 51523 http://firebird.svn.sourceforge.net/firebird/?rev=51523&view=rev Author: asfernandes Date: 2010-09-04 21:36:41 +0000 (Sat, 04 Sep 2010) Log Message: ----------- Refactor a number of expression nodes: nod_add, nod_divide, nod_multiply, nod_negate, nod_user_name, nod_subtract, nod_current_date, nod_current_time, nod_current_timestamp, nod_add2, nod_subtract2, nod_multiply2, nod_divide2, nod_current_role, nod_internal_info Modified Paths: -------------- firebird/trunk/builds/posix/make.shared.variables firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj.filters firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj.filters firebird/trunk/builds/win32/msvc10/engine.vcxproj firebird/trunk/builds/win32/msvc10/engine.vcxproj.filters firebird/trunk/builds/win32/msvc10/engine_classic.vcxproj firebird/trunk/builds/win32/msvc10/engine_classic.vcxproj.filters firebird/trunk/builds/win32/msvc10/engine_embed.vcxproj firebird/trunk/builds/win32/msvc10/engine_embed.vcxproj.filters firebird/trunk/builds/win32/msvc9/dsql_server.vcproj firebird/trunk/builds/win32/msvc9/dsql_server_classic.vcproj firebird/trunk/builds/win32/msvc9/engine.vcproj firebird/trunk/builds/win32/msvc9/engine_classic.vcproj firebird/trunk/builds/win32/msvc9/engine_embed.vcproj firebird/trunk/src/dsql/AggNodes.cpp firebird/trunk/src/dsql/ExprNodes.cpp firebird/trunk/src/dsql/ExprNodes.h firebird/trunk/src/dsql/Nodes.h firebird/trunk/src/dsql/Visitors.h firebird/trunk/src/dsql/gen.cpp firebird/trunk/src/dsql/gen_proto.h firebird/trunk/src/dsql/make.cpp firebird/trunk/src/dsql/node.h firebird/trunk/src/dsql/parse.y firebird/trunk/src/dsql/pass1.cpp firebird/trunk/src/gpre/cme.cpp firebird/trunk/src/jrd/Optimizer.cpp firebird/trunk/src/jrd/cmp.cpp firebird/trunk/src/jrd/evl.cpp firebird/trunk/src/jrd/evl_proto.h firebird/trunk/src/jrd/exe.h firebird/trunk/src/jrd/nod.h firebird/trunk/src/jrd/opt.cpp firebird/trunk/src/jrd/par.cpp firebird/trunk/src/misc/blrtable.cpp Removed Paths: ------------- firebird/trunk/src/dsql/misc_func.cpp firebird/trunk/src/dsql/misc_func.h firebird/trunk/src/jrd/misc_func_ids.h Modified: firebird/trunk/builds/posix/make.shared.variables =================================================================== --- firebird/trunk/builds/posix/make.shared.variables 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/posix/make.shared.variables 2010-09-04 21:36:41 UTC (rev 51523) @@ -80,7 +80,7 @@ DSQL_ServerFiles= metd.epp DSqlDataTypeUtil.cpp \ ddl.cpp dsql.cpp errd.cpp gen.cpp hsh.cpp make.cpp \ - movd.cpp parse.cpp Parser.cpp pass1.cpp misc_func.cpp \ + movd.cpp parse.cpp Parser.cpp pass1.cpp \ DdlNodes.epp PackageNodes.epp AggNodes.cpp BlrWriter.cpp DsqlCompilerScratch.cpp \ ExprNodes.cpp StmtNodes.cpp WinNodes.cpp Modified: firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj =================================================================== --- firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj 2010-09-04 21:36:41 UTC (rev 51523) @@ -150,7 +150,6 @@ <ClCompile Include="..\..\..\src\dsql\hsh.cpp" /> <ClCompile Include="..\..\..\src\dsql\keywords.cpp" /> <ClCompile Include="..\..\..\src\dsql\make.cpp" /> - <ClCompile Include="..\..\..\src\dsql\misc_func.cpp" /> <ClCompile Include="..\..\..\src\dsql\movd.cpp" /> <ClCompile Include="..\..\..\src\dsql\parse.cpp" /> <ClCompile Include="..\..\..\src\dsql\Parser.cpp" /> @@ -194,7 +193,6 @@ <ClInclude Include="..\..\..\src\dsql\keywords.h" /> <ClInclude Include="..\..\..\src\dsql\make_proto.h" /> <ClInclude Include="..\..\..\src\dsql\metd_proto.h" /> - <ClInclude Include="..\..\..\src\dsql\misc_func.h" /> <ClInclude Include="..\..\..\src\dsql\movd_proto.h" /> <ClInclude Include="..\..\..\src\dsql\node.h" /> <ClInclude Include="..\..\..\src\dsql\Nodes.h" /> @@ -214,4 +212,4 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> -</Project> \ No newline at end of file +</Project> Modified: firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj.filters =================================================================== --- firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj.filters 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj.filters 2010-09-04 21:36:41 UTC (rev 51523) @@ -58,9 +58,6 @@ <ClCompile Include="..\..\..\src\dsql\make.cpp"> <Filter>DSQL files</Filter> </ClCompile> - <ClCompile Include="..\..\..\src\dsql\misc_func.cpp"> - <Filter>DSQL files</Filter> - </ClCompile> <ClCompile Include="..\..\..\src\dsql\movd.cpp"> <Filter>DSQL files</Filter> </ClCompile> @@ -180,9 +177,6 @@ <ClInclude Include="..\..\..\src\dsql\metd_proto.h"> <Filter>Header files</Filter> </ClInclude> - <ClInclude Include="..\..\..\src\dsql\misc_func.h"> - <Filter>Header files</Filter> - </ClInclude> <ClInclude Include="..\..\..\src\dsql\movd_proto.h"> <Filter>Header files</Filter> </ClInclude> @@ -229,4 +223,4 @@ <Filter>Header files</Filter> </ClInclude> </ItemGroup> -</Project> \ No newline at end of file +</Project> Modified: firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj =================================================================== --- firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj 2010-09-04 21:36:41 UTC (rev 51523) @@ -150,7 +150,6 @@ <ClCompile Include="..\..\..\src\dsql\hsh.cpp" /> <ClCompile Include="..\..\..\src\dsql\keywords.cpp" /> <ClCompile Include="..\..\..\src\dsql\make.cpp" /> - <ClCompile Include="..\..\..\src\dsql\misc_func.cpp" /> <ClCompile Include="..\..\..\src\dsql\movd.cpp" /> <ClCompile Include="..\..\..\src\dsql\parse.cpp" /> <ClCompile Include="..\..\..\src\dsql\Parser.cpp" /> @@ -194,7 +193,6 @@ <ClInclude Include="..\..\..\src\dsql\keywords.h" /> <ClInclude Include="..\..\..\src\dsql\make_proto.h" /> <ClInclude Include="..\..\..\src\dsql\metd_proto.h" /> - <ClInclude Include="..\..\..\src\dsql\misc_func.h" /> <ClInclude Include="..\..\..\src\dsql\movd_proto.h" /> <ClInclude Include="..\..\..\src\dsql\node.h" /> <ClInclude Include="..\..\..\src\dsql\Nodes.h" /> @@ -214,4 +212,4 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> -</Project> \ No newline at end of file +</Project> Modified: firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj.filters =================================================================== --- firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj.filters 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj.filters 2010-09-04 21:36:41 UTC (rev 51523) @@ -58,9 +58,6 @@ <ClCompile Include="..\..\..\src\dsql\make.cpp"> <Filter>DSQL files</Filter> </ClCompile> - <ClCompile Include="..\..\..\src\dsql\misc_func.cpp"> - <Filter>DSQL files</Filter> - </ClCompile> <ClCompile Include="..\..\..\src\dsql\movd.cpp"> <Filter>DSQL files</Filter> </ClCompile> @@ -180,9 +177,6 @@ <ClInclude Include="..\..\..\src\dsql\metd_proto.h"> <Filter>Header files</Filter> </ClInclude> - <ClInclude Include="..\..\..\src\dsql\misc_func.h"> - <Filter>Header files</Filter> - </ClInclude> <ClInclude Include="..\..\..\src\dsql\movd_proto.h"> <Filter>Header files</Filter> </ClInclude> @@ -229,4 +223,4 @@ <Filter>Header files</Filter> </ClInclude> </ItemGroup> -</Project> \ No newline at end of file +</Project> Modified: firebird/trunk/builds/win32/msvc10/engine.vcxproj =================================================================== --- firebird/trunk/builds/win32/msvc10/engine.vcxproj 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc10/engine.vcxproj 2010-09-04 21:36:41 UTC (rev 51523) @@ -398,7 +398,6 @@ <ClInclude Include="..\..\..\src\jrd\lls.h" /> <ClInclude Include="..\..\..\src\jrd\met.h" /> <ClInclude Include="..\..\..\src\jrd\met_proto.h" /> - <ClInclude Include="..\..\..\src\jrd\misc_func_ids.h" /> <ClInclude Include="..\..\..\src\jrd\mov_proto.h" /> <ClInclude Include="..\..\..\src\jrd\msg.h" /> <ClInclude Include="..\..\..\src\jrd\msg_encode.h" /> @@ -486,4 +485,4 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> -</Project> \ No newline at end of file +</Project> Modified: firebird/trunk/builds/win32/msvc10/engine.vcxproj.filters =================================================================== --- firebird/trunk/builds/win32/msvc10/engine.vcxproj.filters 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc10/engine.vcxproj.filters 2010-09-04 21:36:41 UTC (rev 51523) @@ -767,9 +767,6 @@ <ClInclude Include="..\..\..\src\jrd\met_proto.h"> <Filter>Header files</Filter> </ClInclude> - <ClInclude Include="..\..\..\src\jrd\misc_func_ids.h"> - <Filter>Header files</Filter> - </ClInclude> <ClInclude Include="..\..\..\src\jrd\mov_proto.h"> <Filter>Header files</Filter> </ClInclude> @@ -1020,4 +1017,4 @@ <Filter>Header files</Filter> </ClInclude> </ItemGroup> -</Project> \ No newline at end of file +</Project> Modified: firebird/trunk/builds/win32/msvc10/engine_classic.vcxproj =================================================================== --- firebird/trunk/builds/win32/msvc10/engine_classic.vcxproj 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc10/engine_classic.vcxproj 2010-09-04 21:36:41 UTC (rev 51523) @@ -398,7 +398,6 @@ <ClInclude Include="..\..\..\src\jrd\lls.h" /> <ClInclude Include="..\..\..\src\jrd\met.h" /> <ClInclude Include="..\..\..\src\jrd\met_proto.h" /> - <ClInclude Include="..\..\..\src\jrd\misc_func_ids.h" /> <ClInclude Include="..\..\..\src\jrd\mov_proto.h" /> <ClInclude Include="..\..\..\src\jrd\msg.h" /> <ClInclude Include="..\..\..\src\jrd\msg_encode.h" /> @@ -485,4 +484,4 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> -</Project> \ No newline at end of file +</Project> Modified: firebird/trunk/builds/win32/msvc10/engine_classic.vcxproj.filters =================================================================== --- firebird/trunk/builds/win32/msvc10/engine_classic.vcxproj.filters 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc10/engine_classic.vcxproj.filters 2010-09-04 21:36:41 UTC (rev 51523) @@ -767,9 +767,6 @@ <ClInclude Include="..\..\..\src\jrd\met_proto.h"> <Filter>Header files</Filter> </ClInclude> - <ClInclude Include="..\..\..\src\jrd\misc_func_ids.h"> - <Filter>Header files</Filter> - </ClInclude> <ClInclude Include="..\..\..\src\jrd\mov_proto.h"> <Filter>Header files</Filter> </ClInclude> @@ -1017,4 +1014,4 @@ <Filter>Header files</Filter> </ClInclude> </ItemGroup> -</Project> \ No newline at end of file +</Project> Modified: firebird/trunk/builds/win32/msvc10/engine_embed.vcxproj =================================================================== --- firebird/trunk/builds/win32/msvc10/engine_embed.vcxproj 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc10/engine_embed.vcxproj 2010-09-04 21:36:41 UTC (rev 51523) @@ -398,7 +398,6 @@ <ClInclude Include="..\..\..\src\jrd\lls.h" /> <ClInclude Include="..\..\..\src\jrd\met.h" /> <ClInclude Include="..\..\..\src\jrd\met_proto.h" /> - <ClInclude Include="..\..\..\src\jrd\misc_func_ids.h" /> <ClInclude Include="..\..\..\src\jrd\mov_proto.h" /> <ClInclude Include="..\..\..\src\jrd\msg.h" /> <ClInclude Include="..\..\..\src\jrd\msg_encode.h" /> @@ -485,4 +484,4 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> -</Project> \ No newline at end of file +</Project> Modified: firebird/trunk/builds/win32/msvc10/engine_embed.vcxproj.filters =================================================================== --- firebird/trunk/builds/win32/msvc10/engine_embed.vcxproj.filters 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc10/engine_embed.vcxproj.filters 2010-09-04 21:36:41 UTC (rev 51523) @@ -767,9 +767,6 @@ <ClInclude Include="..\..\..\src\jrd\met_proto.h"> <Filter>Header files</Filter> </ClInclude> - <ClInclude Include="..\..\..\src\jrd\misc_func_ids.h"> - <Filter>Header files</Filter> - </ClInclude> <ClInclude Include="..\..\..\src\jrd\mov_proto.h"> <Filter>Header files</Filter> </ClInclude> @@ -1017,4 +1014,4 @@ <Filter>Header files</Filter> </ClInclude> </ItemGroup> -</Project> \ No newline at end of file +</Project> Modified: firebird/trunk/builds/win32/msvc9/dsql_server.vcproj =================================================================== --- firebird/trunk/builds/win32/msvc9/dsql_server.vcproj 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc9/dsql_server.vcproj 2010-09-04 21:36:41 UTC (rev 51523) @@ -315,10 +315,6 @@ > </File> <File - RelativePath="..\..\..\src\dsql\misc_func.cpp" - > - </File> - <File RelativePath="..\..\..\src\dsql\movd.cpp" > </File> @@ -486,10 +482,6 @@ > </File> <File - RelativePath="..\..\..\src\dsql\misc_func.h" - > - </File> - <File RelativePath="..\..\..\src\dsql\movd_proto.h" > </File> Modified: firebird/trunk/builds/win32/msvc9/dsql_server_classic.vcproj =================================================================== --- firebird/trunk/builds/win32/msvc9/dsql_server_classic.vcproj 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc9/dsql_server_classic.vcproj 2010-09-04 21:36:41 UTC (rev 51523) @@ -315,10 +315,6 @@ > </File> <File - RelativePath="..\..\..\src\dsql\misc_func.cpp" - > - </File> - <File RelativePath="..\..\..\src\dsql\movd.cpp" > </File> @@ -486,10 +482,6 @@ > </File> <File - RelativePath="..\..\..\src\dsql\misc_func.h" - > - </File> - <File RelativePath="..\..\..\src\dsql\movd_proto.h" > </File> Modified: firebird/trunk/builds/win32/msvc9/engine.vcproj =================================================================== --- firebird/trunk/builds/win32/msvc9/engine.vcproj 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc9/engine.vcproj 2010-09-04 21:36:41 UTC (rev 51523) @@ -1276,10 +1276,6 @@ > </File> <File - RelativePath="..\..\..\src\jrd\misc_func_ids.h" - > - </File> - <File RelativePath="..\..\..\src\jrd\mov_proto.h" > </File> Modified: firebird/trunk/builds/win32/msvc9/engine_classic.vcproj =================================================================== --- firebird/trunk/builds/win32/msvc9/engine_classic.vcproj 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc9/engine_classic.vcproj 2010-09-04 21:36:41 UTC (rev 51523) @@ -1276,10 +1276,6 @@ > </File> <File - RelativePath="..\..\..\src\jrd\misc_func_ids.h" - > - </File> - <File RelativePath="..\..\..\src\jrd\mov_proto.h" > </File> Modified: firebird/trunk/builds/win32/msvc9/engine_embed.vcproj =================================================================== --- firebird/trunk/builds/win32/msvc9/engine_embed.vcproj 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/builds/win32/msvc9/engine_embed.vcproj 2010-09-04 21:36:41 UTC (rev 51523) @@ -1276,10 +1276,6 @@ > </File> <File - RelativePath="..\..\..\src\jrd\misc_func_ids.h" - > - </File> - <File RelativePath="..\..\..\src\jrd\mov_proto.h" > </File> Modified: firebird/trunk/src/dsql/AggNodes.cpp =================================================================== --- firebird/trunk/src/dsql/AggNodes.cpp 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/src/dsql/AggNodes.cpp 2010-09-04 21:36:41 UTC (rev 51523) @@ -21,6 +21,7 @@ #include "firebird.h" #include "../jrd/common.h" #include "../dsql/AggNodes.h" +#include "../dsql/ExprNodes.h" #include "../dsql/node.h" #include "../jrd/jrd.h" #include "../jrd/blr.h" @@ -586,7 +587,7 @@ else { // Initialize the result area as an int64. If the field being aggregated is approximate - // numeric, the first call to EVL_add2 will convert the descriptor to double. + // numeric, the first call to add will convert the descriptor to double. impure->make_int64(0, node->nod_scale); } } @@ -597,9 +598,9 @@ ++impure->vlux_count; if (dialect1) - EVL_add(desc, node, impure); + ArithmeticNode::add(desc, impure, node, blr_add); else - EVL_add2(desc, node, impure); + ArithmeticNode::add2(desc, impure, node, blr_add); } dsc* AvgAggNode::aggExecute(thread_db* tdbb, jrd_req* request) const @@ -1059,7 +1060,7 @@ else { // Initialize the result area as an int64. If the field being aggregated is approximate - // numeric, the first call to EVL_add2 will convert the descriptor to double. + // numeric, the first call to add will convert the descriptor to double. impure->make_int64(0, node->nod_scale); } } @@ -1070,9 +1071,9 @@ ++impure->vlux_count; if (dialect1) - EVL_add(desc, node, impure); + ArithmeticNode::add(desc, impure, node, blr_add); else - EVL_add2(desc, node, impure); + ArithmeticNode::add2(desc, impure, node, blr_add); } dsc* SumAggNode::aggExecute(thread_db* tdbb, jrd_req* request) const Modified: firebird/trunk/src/dsql/ExprNodes.cpp =================================================================== --- firebird/trunk/src/dsql/ExprNodes.cpp 2010-09-04 03:20:44 UTC (rev 51522) +++ firebird/trunk/src/dsql/ExprNodes.cpp 2010-09-04 21:36:41 UTC (rev 51523) @@ -19,19 +19,26 @@ */ #include "firebird.h" +#include <math.h> #include "../jrd/common.h" +#include "../common/classes/FpeControl.h" #include "../dsql/ExprNodes.h" #include "../dsql/node.h" +#include "../jrd/align.h" #include "../jrd/blr.h" +#include "../jrd/quad.h" #include "../jrd/tra.h" #include "../jrd/Function.h" #include "../jrd/SysFunction.h" #include "../jrd/recsrc/RecordSource.h" #include "../jrd/blb_proto.h" #include "../jrd/cmp_proto.h" +#include "../jrd/cvt_proto.h" +#include "../jrd/dsc_proto.h" #include "../jrd/evl_proto.h" #include "../jrd/intl_proto.h" #include "../jrd/mov_proto.h" +#include "../jrd/pag_proto.h" #include "../jrd/par_proto.h" #include "../dsql/ddl_proto.h" #include "../dsql/errd_proto.h" @@ -51,6 +58,22 @@ namespace Jrd { +static const SINT64 MAX_INT64_LIMIT = MAX_SINT64 / 10; +static const SINT64 MIN_INT64_LIMIT = MIN_SINT64 / 10; +static const SINT64 SECONDS_PER_DAY = 24 * 60 * 60; +static const SINT64 ISC_TICKS_PER_DAY = SECONDS_PER_DAY * ISC_TIME_SECONDS_PRECISION; +static const SCHAR DIALECT_3_TIMESTAMP_SCALE = -9; +static const SCHAR DIALECT_1_TIMESTAMP_SCALE = 0; + +static bool couldBeDate(const dsc desc); +static SINT64 getDayFraction(const dsc* d); +static SINT64 getTimeStampToIscTicks(const dsc* d); +static bool isDateAndTime(const dsc& d1, const dsc& d2); + + +//-------------------- + + ExprNode* ExprNode::fromLegacy(const dsql_nod* node) { return node->nod_type == Dsql::nod_class_exprnode ? @@ -143,6 +166,2159 @@ //-------------------- +static RegisterNode<ArithmeticNode> regArithmeticNodeAdd(blr_add); +static RegisterNode<ArithmeticNode> regArithmeticNodeSubtract(blr_subtract); +static RegisterNode<ArithmeticNode> regArithmeticNodeMultiply(blr_multiply); +static RegisterNode<ArithmeticNode> regArithmeticNodeDivide(blr_divide); + +ArithmeticNode::ArithmeticNode(MemoryPool& pool, UCHAR aBlrOp, bool aDialect1, + dsql_nod* aArg1, dsql_nod* aArg2) + : TypedNode<ExprNode, ExprNode::TYPE_ARITHMETIC>(pool), + blrOp(aBlrOp), + dialect1(aDialect1), + label(pool), + dsqlArg1(aArg1), + dsqlArg2(aArg2), + arg1(NULL), + arg2(NULL) +{ + switch (blrOp) + { + case blr_add: + dsqlCompatDialectVerb = "add"; + break; + + case blr_subtract: + dsqlCompatDialectVerb = "subtract"; + break; + + case blr_multiply: + dsqlCompatDialectVerb = "multiply"; + break; + + case blr_divide: + dsqlCompatDialectVerb = "divide"; + break; + + default: + fb_assert(false); + } + + label = dsqlCompatDialectVerb; + label.upper(); + + addChildNode(dsqlArg1, arg1); + addChildNode(dsqlArg2, arg2); +} + +DmlNode* ArithmeticNode::parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb, UCHAR blrOp) +{ + ArithmeticNode* node = FB_NEW(pool) ArithmeticNode( + pool, blrOp, (csb->csb_g_flags & csb_blr_version4)); + node->arg1 = PAR_parse_node(tdbb, csb, VALUE); + node->arg2 = PAR_parse_node(tdbb, csb, VALUE); + return node; +} + +void ArithmeticNode::print(string& text, Array<dsql_nod*>& nodes) const +{ + text.printf("ArithmeticNode %s (%d)", label.c_str(), (dialect1 ? 1 : 3)); + ExprNode::print(text, nodes); +} + +void ArithmeticNode::setParameterName(dsql_par* parameter) const +{ + parameter->par_name = parameter->par_alias = label; +} + +bool ArithmeticNode::setParameterType(DsqlCompilerScratch* dsqlScratch, + dsql_nod* node, bool forceVarChar) const +{ + return PASS1_set_parameter_type(dsqlScratch, dsqlArg1, node, forceVarChar) | + PASS1_set_parameter_type(dsqlScratch, dsqlArg2, node, forceVarChar); +} + +void ArithmeticNode::genBlr() +{ + dsqlScratch->appendUChar(blrOp); + GEN_expr(dsqlScratch, dsqlArg1); + GEN_expr(dsqlScratch, dsqlArg2); +} + +void ArithmeticNode::make(dsc* desc, dsql_nod* /*nullReplacement*/) +{ + dsc desc1, desc2; + + MAKE_desc(dsqlScratch, &desc1, dsqlArg1, dsqlArg2); + MAKE_desc(dsqlScratch, &desc2, dsqlArg2, dsqlArg1); + + if (dsqlArg1->nod_type == Dsql::nod_null && dsqlArg2->nod_type == Dsql::nod_null) + { + // NULL + NULL = NULL of INT + desc->makeLong(0); + desc->setNullable(true); + } + else if (dialect1) + makeDialect1(desc, desc1, desc2); + else + makeDialect3(desc, desc1, desc2); +} + +void ArithmeticNode::makeDialect1(dsc* desc, dsc& desc1, dsc& desc2) +{ + USHORT dtype, dtype1, dtype2; + + switch (blrOp) + { + case blr_add: + case blr_subtract: + dtype1 = desc1.dsc_dtype; + if (dtype_int64 == dtype1 || DTYPE_IS_TEXT(dtype1)) + dtype1 = dtype_double; + + dtype2 = desc2.dsc_dtype; + if (dtype_int64 == dtype2 || DTYPE_IS_TEXT(dtype2)) + dtype2 = dtype_double; + + dtype = MAX(dtype1, dtype2); + + if (DTYPE_IS_BLOB(dtype)) + { + ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) << + Arg::Gds(isc_dsql_no_blob_array)); + } + + desc->dsc_flags = (desc1.dsc_flags | desc2.dsc_flags) & DSC_nullable; + + switch (dtype) + { + case dtype_sql_time: + case dtype_sql_date: + // CVC: I don't see how this case can happen since dialect 1 doesn't accept + // DATE or TIME + // Forbid <date/time> +- <string> + if (DTYPE_IS_TEXT(desc1.dsc_dtype) || DTYPE_IS_TEXT(desc2.dsc_dtype)) + { + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_nodateortime_pm_string)); + } + // fall into + + case dtype_timestamp: + + // Allow <timestamp> +- <string> (historical) + if (couldBeDate(desc1) && couldBeDate(desc2)) + { + if (blrOp == blr_subtract) + { + // <any date> - <any date> + + // Legal permutations are: + // <timestamp> - <timestamp> + // <timestamp> - <date> + // <date> - <date> + // <date> - <timestamp> + // <time> - <time> + // <timestamp> - <string> + // <string> - <timestamp> + // <string> - <string> + + if (DTYPE_IS_TEXT(desc1.dsc_dtype)) + dtype = dtype_timestamp; + else if (DTYPE_IS_TEXT(desc2.dsc_dtype)) + dtype = dtype_timestamp; + else if (desc1.dsc_dtype == desc2.dsc_dtype) + dtype = desc1.dsc_dtype; + else if (desc1.dsc_dtype == dtype_timestamp && + desc2.dsc_dtype == dtype_sql_date) + { + dtype = dtype_timestamp; + } + else if (desc2.dsc_dtype == dtype_timestamp && + desc1.dsc_dtype == dtype_sql_date) + { + dtype = dtype_timestamp; + } + else + { + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_invalid_datetime_subtract)); + } + + if (dtype == dtype_sql_date) + { + desc->dsc_dtype = dtype_long; + desc->dsc_length = sizeof(SLONG); + desc->dsc_scale = 0; + } + else if (dtype == dtype_sql_time) + { + desc->dsc_dtype = dtype_long; + desc->dsc_length = sizeof(SLONG); + desc->dsc_scale = ISC_TIME_SECONDS_PRECISION_SCALE; + desc->dsc_sub_type = dsc_num_type_numeric; + } + else + { + fb_assert(dtype == dtype_timestamp); + desc->dsc_dtype = dtype_double; + desc->dsc_length = sizeof(double); + desc->dsc_scale = 0; + } + } + else if (isDateAndTime(desc1, desc2)) + { + // <date> + <time> + // <time> + <date> + desc->dsc_dtype = dtype_timestamp; + desc->dsc_length = type_lengths[dtype_timestamp]; + desc->dsc_scale = 0; + } + else + { + // <date> + <date> + // <time> + <time> + // CVC: Hard to see it, since we are in dialect 1. + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_invalid_dateortime_add)); + } + } + else if (DTYPE_IS_DATE(desc1.dsc_dtype) || blrOp == blr_add) + { + // <date> +/- <non-date> + // <non-date> + <date> + desc->dsc_dtype = desc1.dsc_dtype; + if (!DTYPE_IS_DATE(desc->dsc_dtype)) + desc->dsc_dtype = desc2.dsc_dtype; + fb_assert(DTYPE_IS_DATE(desc->dsc_dtype)); + desc->dsc_length = type_lengths[desc->dsc_dtype]; + desc->dsc_scale = 0; + } + else + { + // <non-date> - <date> + fb_assert(blrOp == blr_subtract); + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_invalid_type_minus_date)); + } + break; + + case dtype_varying: + case dtype_cstring: + case dtype_text: + case dtype_double: + case dtype_real: + desc->dsc_dtype = dtype_double; + desc->dsc_sub_type = 0; + desc->dsc_scale = 0; + desc->dsc_length = sizeof(double); + break; + + default: + desc->dsc_dtype = dtype_long; + desc->dsc_sub_type = 0; + desc->dsc_length = sizeof(SLONG); + desc->dsc_scale = MIN(NUMERIC_SCALE(desc1), NUMERIC_SCALE(desc2)); + break; + } + + break; + + case blr_multiply: + // Arrays and blobs can never partipate in multiplication + if (DTYPE_IS_BLOB(desc1.dsc_dtype) || DTYPE_IS_BLOB(desc2.dsc_dtype)) + { + ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) << + Arg::Gds(isc_dsql_no_blob_array)); + } + + dtype = DSC_multiply_blr4_result[desc1.dsc_dtype][desc2.dsc_dtype]; + desc->dsc_flags = (desc1.dsc_flags | desc2.dsc_flags) & DSC_nullable; + + switch (dtype) + { + case dtype_double: + desc->dsc_dtype = dtype_double; + desc->dsc_sub_type = 0; + desc->dsc_scale = 0; + desc->dsc_length = sizeof(double); + break; + + case dtype_long: + desc->dsc_dtype = dtype_long; + desc->dsc_sub_type = 0; + desc->dsc_length = sizeof(SLONG); + desc->dsc_scale = NUMERIC_SCALE(desc1) + NUMERIC_SCALE(desc2); + break; + + default: + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_invalid_type_multip_dial1)); + } + + break; + + case blr_divide: + // Arrays and blobs can never partipate in division + if (DTYPE_IS_BLOB(desc1.dsc_dtype) || DTYPE_IS_BLOB(desc2.dsc_dtype)) + { + ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) << + Arg::Gds(isc_dsql_no_blob_array)); + } + + dtype1 = desc1.dsc_dtype; + if (dtype_int64 == dtype1 || DTYPE_IS_TEXT(dtype1)) + dtype1 = dtype_double; + + dtype2 = desc2.dsc_dtype; + if (dtype_int64 == dtype2 || DTYPE_IS_TEXT(dtype2)) + dtype2 = dtype_double; + + dtype = MAX(dtype1, dtype2); + + if (!DTYPE_IS_NUMERIC(dtype)) + { + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_mustuse_numeric_div_dial1)); + } + + desc->dsc_dtype = dtype_double; + desc->dsc_length = sizeof(double); + desc->dsc_scale = 0; + desc->dsc_flags = (desc1.dsc_flags | desc2.dsc_flags) & DSC_nullable; + break; + } +} + +void ArithmeticNode::makeDialect3(dsc* desc, dsc& desc1, dsc& desc2) +{ + USHORT dtype, dtype1, dtype2; + + switch (blrOp) + { + case blr_add: + case blr_subtract: + dtype1 = desc1.dsc_dtype; + dtype2 = desc2.dsc_dtype; + + // Arrays and blobs can never partipate in addition/subtraction + if (DTYPE_IS_BLOB(dtype1) || DTYPE_IS_BLOB(dtype2)) + { + ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) << + Arg::Gds(isc_dsql_no_blob_array)); + } + + // In Dialect 2 or 3, strings can never partipate in addition / sub + // (use a specific cast instead) + if (DTYPE_IS_TEXT(dtype1) || DTYPE_IS_TEXT(dtype2)) + { + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_nostring_addsub_dial3)); + } + + // Determine the TYPE of arithmetic to perform, store it + // in dtype. Note: this is different from the result of + // the operation, as <timestamp>-<timestamp> uses + // <timestamp> arithmetic, but returns a <double> + if (DTYPE_IS_EXACT(dtype1) && DTYPE_IS_EXACT(dtype2)) + dtype = dtype_int64; + else if (DTYPE_IS_NUMERIC(dtype1) && DTYPE_IS_NUMERIC(dtype2)) + { + fb_assert(DTYPE_IS_APPROX(dtype1) || DTYPE_IS_APPROX(dtype2)); + dtype = dtype_double; + } + else + { + // mixed numeric and non-numeric: + + // The MAX(dtype) rule doesn't apply with dtype_int64 + + if (dtype_int64 == dtype1) + dtype1 = dtype_double; + if (dtype_int64 == dtype2) + dtype2 = dtype_double; + + dtype = MAX(dtype1, dtype2); + } + + desc->dsc_flags = (desc1.dsc_flags | desc2.dsc_flags) & DSC_nullable; + + switch (dtype) + { + case dtype_sql_time: + case dtype_sql_date: + case dtype_timestamp: + if ((DTYPE_IS_DATE(dtype1) || dtype1 == dtype_unknown) && + (DTYPE_IS_DATE(dtype2) || dtype2 == dtype_unknown)) + { + if (blrOp == blr_subtract) + { + // <any date> - <any date> + // Legal permutations are: + // <timestamp> - <timestamp> + // <timestamp> - <date> + // <date> - <date> + // <date> - <timestamp> + // <time> - <time> + + if (dtype1 == dtype2) + dtype = dtype1; + else if (dtype1 == dtype_timestamp && dtype2 == dtype_sql_date) + dtype = dtype_timestamp; + else if (dtype2 == dtype_timestamp && dtype1 == dtype_sql_date) + dtype = dtype_timestamp; + else + { + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_invalid_datetime_subtract)); + } + + if (dtype == dtype_sql_date) + { + desc->dsc_dtype = dtype_long; + desc->dsc_length = sizeof(SLONG); + desc->dsc_scale = 0; + } + else if (dtype == dtype_sql_time) + { + desc->dsc_dtype = dtype_long; + desc->dsc_length = sizeof(SLONG); + desc->dsc_scale = ISC_TIME_SECONDS_PRECISION_SCALE; + desc->dsc_sub_type = dsc_num_type_numeric; + } + else + { + fb_assert(dtype == dtype_timestamp); + desc->dsc_dtype = dtype_int64; + desc->dsc_length = sizeof(SINT64); + desc->dsc_scale = -9; + desc->dsc_sub_type = dsc_num_type_numeric; + } + } + else if (isDateAndTime(desc1, desc2)) + { + // <date> + <time> + // <time> + <date> + desc->dsc_dtype = dtype_timestamp; + desc->dsc_length = type_lengths[dtype_timestamp]; + desc->dsc_scale = 0; + } + else + { + // <date> + <date> + // <time> + <time> + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_invalid_dateortime_add)); + } + } + else if (DTYPE_IS_DATE(desc1.dsc_dtype) || blrOp == blr_add) + { + // <date> +/- <non-date> + // <non-date> + <date> + desc->dsc_dtype = desc1.dsc_dtype; + if (!DTYPE_IS_DATE(desc->dsc_dtype)) + desc->dsc_dtype = desc2.dsc_dtype; + fb_assert(DTYPE_IS_DATE(desc->dsc_dtype)); + desc->dsc_length = type_lengths[desc->dsc_dtype]; + desc->dsc_scale = 0; + } + else + { + // <non-date> - <date> + fb_assert(blrOp == blr_subtract); + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_invalid_type_minus_date)); + } + break; + + case dtype_varying: + case dtype_cstring: + case dtype_text: + case dtype_double: + case dtype_real: + desc->dsc_dtype = dtype_double; + desc->dsc_sub_type = 0; + desc->dsc_scale = 0; + desc->dsc_length = sizeof(double); + break; + + case dtype_short: + case dtype_long: + case dtype_int64: + desc->dsc_dtype = dtype_int64; + desc->dsc_sub_type = 0; + desc->dsc_length = sizeof(SINT64); + + // The result type is int64 because both operands are + // exact numeric: hence we don't need the NUMERIC_SCALE + // macro here. + fb_assert(desc1.dsc_dtype == dtype_unknown || DTYPE_IS_EXACT(desc1.dsc_dtype)); + fb_assert(desc2.dsc_dtype == dtype_unknown || DTYPE_IS_EXACT(desc2.dsc_dtype)); + + desc->dsc_scale = MIN(desc1.dsc_scale, desc2.dsc_scale); + break; + + default: + // a type which cannot participate in an add or subtract + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_invalid_type_addsub_dial3)); + } + + break; + + case blr_multiply: + // In Dialect 2 or 3, strings can never partipate in multiplication + // (use a specific cast instead) + if (DTYPE_IS_TEXT(desc1.dsc_dtype) || DTYPE_IS_TEXT(desc2.dsc_dtype)) + { + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_nostring_multip_dial3)); + } + + // Arrays and blobs can never partipate in multiplication + if (DTYPE_IS_BLOB(desc1.dsc_dtype) || DTYPE_IS_BLOB(desc2.dsc_dtype)) + { + ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) << + Arg::Gds(isc_dsql_no_blob_array)); + } + + dtype = DSC_multiply_result[desc1.dsc_dtype][desc2.dsc_dtype]; + desc->dsc_flags = (desc1.dsc_flags | desc2.dsc_flags) & DSC_nullable; + + switch (dtype) + { + case dtype_double: + desc->dsc_dtype = dtype_double; + desc->dsc_sub_type = 0; + desc->dsc_scale = 0; + desc->dsc_length = sizeof(double); + break; + + case dtype_int64: + desc->dsc_dtype = dtype_int64; + desc->dsc_sub_type = 0; + desc->dsc_length = sizeof(SINT64); + desc->dsc_scale = NUMERIC_SCALE(desc1) + NUMERIC_SCALE(desc2); + break; + + default: + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_invalid_type_multip_dial3)); + } + + break; + + case blr_divide: + // In Dialect 2 or 3, strings can never partipate in division + // (use a specific cast instead) + if (DTYPE_IS_TEXT(desc1.dsc_dtype) || DTYPE_IS_TEXT(desc2.dsc_dtype)) + { + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_nostring_div_dial3)); + } + + // Arrays and blobs can never partipate in division + if (DTYPE_IS_BLOB(desc1.dsc_dtype) || DTYPE_IS_BLOB(desc2.dsc_dtype)) + { + ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) << + Arg::Gds(isc_dsql_no_blob_array)); + } + + dtype = DSC_multiply_result[desc1.dsc_dtype][desc2.dsc_dtype]; + desc->dsc_dtype = static_cast<UCHAR>(dtype); + desc->dsc_flags = (desc1.dsc_flags | desc2.dsc_flags) & DSC_nullable; + + switch (dtype) + { + case dtype_int64: + desc->dsc_length = sizeof(SINT64); + desc->dsc_scale = NUMERIC_SCALE(desc1) + NUMERIC_SCALE(desc2); + break; + + case dtype_double: + desc->dsc_length = sizeof(double); + desc->dsc_scale = 0; + break; + + default: + ERRD_post(Arg::Gds(isc_expression_eval_err) << + Arg::Gds(isc_dsql_invalid_type_div_dial3)); + } + + break; + } +} + +void ArithmeticNode::getDesc(thread_db* tdbb, CompilerScratch* csb, dsc* desc) +{ + dsc desc1, desc2; + + CMP_get_desc(tdbb, csb, arg1, &desc1); + CMP_get_desc(tdbb, csb, arg2, &desc2); + + if (dialect1) + getDescDialect1(tdbb, desc, desc1, desc2); + else + getDescDialect3(tdbb, desc, desc1, desc2); +} + +void ArithmeticNode::getDescDialect1(thread_db* tdbb, dsc* desc, dsc& desc1, dsc& desc2) +{ + USHORT dtype; + + switch (blrOp) + { + case blr_add: + case blr_subtract: + { + /* 92/05/29 DAVES - don't understand why this is done for ONLY + dtype_text (eg: not dtype_cstring or dtype_varying) Doesn't + appear to hurt. + + 94/04/04 DAVES - NOW I understand it! QLI will pass floating + point values to the engine as text. All other numeric constants + it turns into either integers or longs (with scale). */ + + USHORT dtype1 = desc1.dsc_dtype; + if (dtype_int64 == dtype1) + dtype1 = dtype_double; + + USHORT dtype2 = desc2.dsc_dtype; + if (dtype_int64 == dtype2) + dtype2 = dtype_double; + + if (dtype1 == dtype_text || dtype2 == dtype_text) + dtype = MAX(MAX(dtype1, dtype2), (UCHAR) DEFAULT_DOUBLE); + else + dtype = MAX(dtype1, dtype2); + + switch (dtype) + { + case dtype_short: + desc->dsc_dtype = dtype_long; + desc->dsc_length = sizeof(SLONG); + if (DTYPE_IS_TEXT(desc1.dsc_dtype) || DTYPE_IS_TEXT(desc2.dsc_dtype)) + desc->dsc_scale = 0; + else + desc->dsc_scale = MIN(desc1.dsc_scale, desc2.dsc_scale); + + node->nod_scale = desc->dsc_scale; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + return; + + case dtype_sql_date: + case dtype_sql_time: + if (DTYPE_IS_TEXT(desc1.dsc_dtype) || DTYPE_IS_TEXT(desc2.dsc_dtype)) + ERR_post(Arg::Gds(isc_expression_eval_err)); + // fall into + + case dtype_timestamp: + node->nod_flags |= nod_date; + + fb_assert(DTYPE_IS_DATE(desc1.dsc_dtype) || DTYPE_IS_DATE(desc2.dsc_dtype)); + + if (couldBeDate(desc1) && couldBeDate(desc2)) + { + if (blrOp == blr_subtract) + { + // <any date> - <any date> + + /* Legal permutations are: + <timestamp> - <timestamp> + <timestamp> - <date> + <date> - <date> + <date> - <timestamp> + <time> - <time> + <timestamp> - <string> + <string> - <timestamp> + <string> - <string> */ + + if (DTYPE_IS_TEXT(dtype1)) + dtype = dtype_timestamp; + else if (DTYPE_IS_TEXT(dtype2)) + dtype = dtype_timestamp; + else if (dtype1 == dtype2) + dtype = dtype1; + else if (dtype1 == dtype_timestamp && dtype2 == dtype_sql_date) + dtype = dtype_timestamp; + else if (dtype2 == dtype_timestamp && dtype1 == dtype_sql_date) + dtype = dtype_timestamp; + else + ERR_post(Arg::Gds(isc_expression_eval_err)); + + if (dtype == dtype_sql_date) + { + desc->dsc_dtype = dtype_long; + desc->dsc_length = type_lengths[desc->dsc_dtype]; + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + } + else if (dtype == dtype_sql_time) + { + desc->dsc_dtype = dtype_long; + desc->dsc_length = type_lengths[desc->dsc_dtype]; + desc->dsc_scale = ISC_TIME_SECONDS_PRECISION_SCALE; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + } + else + { + fb_assert(dtype == dtype_timestamp); + desc->dsc_dtype = DEFAULT_DOUBLE; + desc->dsc_length = type_lengths[desc->dsc_dtype]; + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + } + } + else if (isDateAndTime(desc1, desc2)) + { + // <date> + <time> + // <time> + <date> + desc->dsc_dtype = dtype_timestamp; + desc->dsc_length = type_lengths[desc->dsc_dtype]; + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + } + else + { + // <date> + <date> + ERR_post(Arg::Gds(isc_expression_eval_err)); + } + } + else if (DTYPE_IS_DATE(desc1.dsc_dtype) || blrOp == blr_add) + { + // <date> +/- <non-date> || <non-date> + <date> + desc->dsc_dtype = desc1.dsc_dtype; + if (!DTYPE_IS_DATE(desc->dsc_dtype)) + desc->dsc_dtype = desc2.dsc_dtype; + + fb_assert(DTYPE_IS_DATE(desc->dsc_dtype)); + desc->dsc_length = type_lengths[desc->dsc_dtype]; + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + } + else + { + // <non-date> - <date> + ERR_post(Arg::Gds(isc_expression_eval_err)); + } + return; + + case dtype_text: + case dtype_cstring: + case dtype_varying: + case dtype_long: + case dtype_real: + case dtype_double: + node->nod_flags |= nod_double; + desc->dsc_dtype = DEFAULT_DOUBLE; + desc->dsc_length = sizeof(double); + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + return; + + case dtype_unknown: + desc->dsc_dtype = dtype_unknown; + desc->dsc_length = 0; + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + return; + + case dtype_quad: + node->nod_flags |= nod_quad; + desc->dsc_dtype = dtype_quad; + desc->dsc_length = sizeof(SQUAD); + if (DTYPE_IS_TEXT(desc1.dsc_dtype) || DTYPE_IS_TEXT(desc2.dsc_dtype)) + desc->dsc_scale = 0; + else + desc->dsc_scale = MIN(desc1.dsc_scale, desc2.dsc_scale); + node->nod_scale = desc->dsc_scale; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; +#ifdef NATIVE_QUAD + return; +#endif + default: + fb_assert(false); + // FALLINTO + + case dtype_blob: + case dtype_array: + break; + } + + break; + } + + case blr_multiply: + dtype = DSC_multiply_blr4_result[desc1.dsc_dtype][desc2.dsc_dtype]; + + switch (dtype) + { + case dtype_long: + desc->dsc_dtype = dtype_long; + desc->dsc_length = sizeof(SLONG); + desc->dsc_scale = node->nod_scale = NUMERIC_SCALE(desc1) + NUMERIC_SCALE(desc2); + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + return; + + case dtype_double: + node->nod_flags |= nod_double; + desc->dsc_dtype = DEFAULT_DOUBLE; + desc->dsc_length = sizeof(double); + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + return; + + case dtype_unknown: + desc->dsc_dtype = dtype_unknown; + desc->dsc_length = 0; + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + return; + + default: + fb_assert(false); + // FALLINTO + + case DTYPE_CANNOT: + // break to error reporting code + break; + } + + break; + + case blr_divide: + // for compatibility with older versions of the product, we accept + // text types for division in blr_version4 (dialect <= 1) only + if (!(DTYPE_IS_NUMERIC(desc1.dsc_dtype) || DTYPE_IS_TEXT(desc1.dsc_dtype))) + { + if (desc1.dsc_dtype != dtype_unknown) + break; // error, dtype not supported by arithmetic + } + + if (!(DTYPE_IS_NUMERIC(desc2.dsc_dtype) || DTYPE_IS_TEXT(desc2.dsc_dtype))) + { + if (desc2.dsc_dtype != dtype_unknown) + break; // error, dtype not supported by arithmetic + } + + desc->dsc_dtype = DEFAULT_DOUBLE; + desc->dsc_length = sizeof(double); + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + break; + } +} + +void ArithmeticNode::getDescDialect3(thread_db* tdbb, dsc* desc, dsc& desc1, dsc& desc2) +{ + USHORT dtype; + + switch (blrOp) + { + case blr_add: + case blr_subtract: + { + USHORT dtype1 = desc1.dsc_dtype; + USHORT dtype2 = desc2.dsc_dtype; + + // In Dialect 2 or 3, strings can never partipate in addition / sub + // (use a specific cast instead) + if (DTYPE_IS_TEXT(dtype1) || DTYPE_IS_TEXT(dtype2)) + ERR_post(Arg::Gds(isc_expression_eval_err)); + + // Because dtype_int64 > dtype_double, we cannot just use the MAX macro to set + // the result dtype. The rule is that two exact numeric operands yield an int64 + // result, while an approximate numeric and anything yield a double result. + + if (DTYPE_IS_EXACT(desc1.dsc_dtype) && DTYPE_IS_EXACT(desc2.dsc_dtype)) + dtype = dtype_int64; + else if (DTYPE_IS_NUMERIC(desc1.dsc_dtype) && DTYPE_IS_NUMERIC(desc2.dsc_dtype)) + dtype = dtype_double; + else + { + // mixed numeric and non-numeric: + + fb_assert(couldBeDate(desc1) || couldBeDate(desc2)); + + // the MAX(dtype) rule doesn't apply with dtype_int64 + + if (dtype_int64 == dtype1) + dtype1 = dtype_double; + + if (dtype_int64 == dtype2) + dtype2 = dtype_double; + + dtype = MAX(dtype1, dtype2); + } + + switch (dtype) + { + case dtype_timestamp: + case dtype_sql_date: + case dtype_sql_time: + node->nod_flags |= nod_date; + + fb_assert(DTYPE_IS_DATE(desc1.dsc_dtype) || DTYPE_IS_DATE(desc2.dsc_dtype)); + + if ((DTYPE_IS_DATE(dtype1) || dtype1 == dtype_unknown) && + (DTYPE_IS_DATE(dtype2) || dtype2 == dtype_unknown)) + { + if (blrOp == blr_subtract) + { + // <any date> - <any date> + + /* Legal permutations are: + <timestamp> - <timestamp> + <timestamp> - <date> + <date> - <date> + <date> - <timestamp> + <time> - <time> */ + + if (dtype1 == dtype_unknown) + dtype1 = dtype2; + else if (dtype2 == dtype_unknown) + dtype2 = dtype1; + + if (dtype1 == dtype2) + dtype = dtype1; + else if ((dtype1 == dtype_timestamp) && (dtype2 == dtype_sql_date)) + dtype = dtype_timestamp; + else if ((dtype2 == dtype_timestamp) && (dtype1 == dtype_sql_date)) + dtype = dtype_timestamp; + else + ERR_post(Arg::Gds(isc_expression_eval_err)); + + if (dtype == dtype_sql_date) + { + desc->dsc_dtype = dtype_long; + desc->dsc_length = type_lengths[desc->dsc_dtype]; + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + } + else if (dtype == dtype_sql_time) + { + desc->dsc_dtype = dtype_long; + desc->dsc_length = type_lengths[desc->dsc_dtype]; + desc->dsc_scale = ISC_TIME_SECONDS_PRECISION_SCALE; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + } + else + { + fb_assert(dtype == dtype_timestamp || dtype == dtype_unknown); + desc->dsc_dtype = DEFAULT_DOUBLE; + desc->dsc_length = type_lengths[desc->dsc_dtype]; + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + } + } + else if (isDateAndTime(desc1, desc2)) + { + // <date> + <time> + // <time> + <date> + desc->dsc_dtype = dtype_timestamp; + desc->dsc_length = type_lengths[desc->dsc_dtype]; + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + } + else + { + // <date> + <date> + ERR_post(Arg::Gds(isc_expression_eval_err)); + } + } + else if (DTYPE_IS_DATE(desc1.dsc_dtype) || blrOp == blr_add) + { + // <date> +/- <non-date> || <non-date> + <date> + desc->dsc_dtype = desc1.dsc_dtype; + if (!DTYPE_IS_DATE(desc->dsc_dtype)) + desc->dsc_dtype = desc2.dsc_dtype; + fb_assert(DTYPE_IS_DATE(desc->dsc_dtype)); + desc->dsc_length = type_lengths[desc->dsc_dtype]; + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + } + else + { + // <non-date> - <date> + ERR_post(Arg::Gds(isc_expression_eval_err)); + } + return; + + case dtype_text: + case dtype_cstring: + case dtype_varying: + case dtype_real: + case dtype_double: + node->nod_flags |= nod_double; + desc->dsc_dtype = DEFAULT_DOUBLE; + desc->dsc_length = sizeof(double); + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + return; + + case dtype_short: + case dtype_long: + case dtype_int64: + desc->dsc_dtype = dtype_int64; + desc->dsc_length = sizeof(SINT64); + if (DTYPE_IS_TEXT(desc1.dsc_dtype) || DTYPE_IS_TEXT(desc2.dsc_dtype)) + desc->dsc_scale = 0; + else + desc->dsc_scale = MIN(desc1.dsc_scale, desc2.dsc_scale); + node->nod_scale = desc->dsc_scale; + desc->dsc_sub_type = MAX(desc1.dsc_sub_type, desc2.dsc_sub_type); + desc->dsc_flags = 0; + return; + + case dtype_unknown: + desc->dsc_dtype = dtype_unknown; + desc->dsc_length = 0; + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + return; + + case dtype_quad: + node->nod_flags |= nod_quad; + desc->dsc_dtype = dtype_quad; + desc->dsc_length = sizeof(SQUAD); + if (DTYPE_IS_TEXT(desc1.dsc_dtype) || DTYPE_IS_TEXT(desc2.dsc_dtype)) + desc->dsc_scale = 0; + else + desc->dsc_scale = MIN(desc1.dsc_scale, desc2.dsc_scale); + node->nod_scale = desc->dsc_scale; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; +#ifdef NATIVE_QUAD + return; +#endif + default: + fb_assert(false); + // FALLINTO + + case dtype_blob: + case dtype_array: + break; + } + + break; + } + + case blr_multiply: + case blr_divide: + dtype = DSC_multiply_result[desc1.dsc_dtype][desc2.dsc_dtype]; + + switch (dtype) + { + case dtype_double: + node->nod_flags |= nod_double; + desc->dsc_dtype = DEFAULT_DOUBLE; + desc->dsc_length = sizeof(double); + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + return; + + case dtype_int64: + desc->dsc_dtype = dtype_int64; + desc->dsc_length = sizeof(SINT64); + desc->dsc_scale = node->nod_scale = NUMERIC_SCALE(desc1) + NUMERIC_SCALE(desc2); + desc->dsc_sub_type = MAX(desc1.dsc_sub_type, desc2.dsc_sub_type); + desc->dsc_flags = 0; + return; + + case dtype_unknown: + desc->dsc_dtype = dtype_unknown; + desc->dsc_length = 0; + desc->dsc_scale = 0; + desc->dsc_sub_type = 0; + desc->dsc_flags = 0; + return; + + default: + fb_assert(false); + // FALLINTO + + case DTYPE_CANNOT: + // break to error reporting code + break; + } + + break; + } +} + +ExprNode* ArithmeticNode::copy(thread_db* tdbb, NodeCopier& copier) +{ + ArithmeticNode* node = FB_NEW(*tdbb->getDefaultPool()) ArithmeticNode(*tdbb->getDefaultPool(), + blrOp, dialect1); + node->arg1 = copier.copy(tdbb, arg1); + node->arg2 = copier.copy(tdbb, arg2); + return node; +} + +bool ArithmeticNode::dsqlMatch(const ExprNode* other, bool ignoreMapCast) const +{ + if (!ExprNode::dsqlMatch(other, ignoreMapCast)) + return false; + + const ArithmeticNode* o = other->as<ArithmeticNode>(); + fb_assert(o) + + return dialect1 == o->dialect1 && blrOp == o->blrOp; +} + +ExprNode* ArithmeticNode::pass2(thread_db* tdbb, CompilerScratch* csb) +{ + ExprNode::pass2(tdbb, csb); + + dsc desc; + getDesc(tdbb, csb, &desc); + node->nod_impure = CMP_impure(csb, sizeof(impure_value)); + + return this; +} + +dsc* ArithmeticNode::execute(thread_db* tdbb, jrd_req* request) const +{ + impure_value* const impure = request->getImpure<impure_value>(node->nod_impure); + + request->req_flags &= ~req_null; + + // Evaluate arguments. If either is null, result is null, but in + // any case, evaluate both, since some expressions may later depend + // on mappings which are developed here + + const dsc* desc1 = EVL_expr(tdbb, arg1); + const ULONG flags = request->req_flags; + request->req_flags &= ~req_null; + + const dsc* desc2 = EVL_expr(tdbb, arg2); + + // restore saved NULL state + + if (flags & req_null) + request->req_flags |= req_null; + + if (request->req_flags & req_null) + return NULL; + + EVL_make_value(tdbb, desc1, impure); + + if (dialect1) // dialect-1 semantics + { + switch (blrOp) + { + case blr_add: + case blr_subtract: + return add(desc2, impure, node, blrOp); + + case blr_divide: + { + const double divisor = MOV_get_double(desc2); + + if (divisor == 0) + { + ERR_post(Arg::Gds(isc_arith_except) << + Arg::Gds(isc_exception_float_divide_by_zero)); + } + + impure->vlu_misc.vlu_double = MOV_get_double(desc1) / divisor; + + if (isinf(impure->vlu_misc.vlu_double)) + { + ERR_post(Arg::Gds(isc_arith_except) << + Arg::Gds(isc_exception_float_overflow)); + } + + impure->vlu_desc.dsc_dtype = DEFAULT_DOUBLE; + impure->vlu_desc.dsc_length = sizeof(double); + impure->vlu_desc.dsc_address = (UCHAR*) &impure->vlu_misc; + + return &impure->vlu_desc; + } + + case blr_multiply: + return multiply(desc2, impure); + } + } + else // with dialect-3 semantics + { + switch (blrOp) + { + case blr_add: + case blr_subtract: + return add2(desc2, impure, node, blrOp); + + case blr_multiply: + return multiply2(desc2, impure); + + case blr_divide: + return divide2(desc2, impure); + } + } + + BUGCHECK(232); // msg 232 EVL_expr: invalid operation + return NULL; +} + +// Add (or subtract) the contents of a descriptor to value block, with dialect-1 semantics. + // This function can be removed when dialect-3 becomes the lowest supported dialect. (Version 7.0?) +dsc* ArithmeticNode::add(const dsc* desc, impure_value* value, const jrd_nod* node, UCHAR blrOp) +{ + DEV_BLKCHK(node, type_nod); + + const ArithmeticNode* arithmeticNode = ExprNode::as<ArithmeticNode>(node); + + fb_assert( + (arithmeticNode && arithmeticNode->dialect1 && + (arithmeticNode->blrOp == blr_add || arithmeticNode->blrOp == blr_subtract)) || + ExprNode::is<AggNode>(node) || node->nod_type == nod_total || node->nod_type == nod_average); + + dsc* const result = &value->vlu_desc; + + // Handle date arithmetic + + if (node->nod_flags & nod_date) + { + fb_assert(arithmeticNode); + return arithmeticNode->addDateTime(desc, value); + } + + // Handle floating arithmetic + + if (node->nod_flags & nod_double) + { + const double d1 = MOV_get_double(desc); + const double d2 = MOV_get_double(&value->vlu_desc); + + value->vlu_misc.vlu_double = (blrOp == blr_subtract) ? d2 - d1 : d1 + d2; + + if (isinf(value->vlu_misc.vlu_double)) + ERR_post(Arg::Gds(isc_arith_except) << Arg::Gds(isc_exception_float_overflow)); + + result->dsc_dtype = DEFAULT_DOUBLE; + result->dsc_length = sizeof(double); + result->dsc_scale = 0; + result->dsc_sub_type = 0; + result->dsc_address = (UCHAR*) &value->vlu_misc.vlu_double; + + return result; + } + + // Handle (oh, ugh) quad arithmetic + + if (node->nod_flags & nod_quad) + { + const SQUAD q1 = MOV_get_quad(desc, node->nod_scale); + const SQUAD q2 = MOV_get_quad(&value->vlu_desc, node->nod_scale); + + result->dsc_dtype = dtype_quad; + result->dsc_length = sizeof(SQUAD); + result->dsc_scale = node->nod_scale; + value->vlu_misc.vlu_quad = (blrOp == blr_subtract) ? + QUAD_SUBTRACT(q2, q1, ERR_post) : QUAD_ADD(q1, q2, ERR_post); + result->dsc_address = (UCHAR*) &value->vlu_misc.vlu_quad; + + return result; + } + + // Everything else defaults to longword + + // CVC: Maybe we should upgrade the sum to double if it doesn't fit? + // This is what was done for multiplicaton in dialect 1. + + const SLONG l1 = MOV_get_long(desc, node->nod_scale); + const SINT64 l2 = MOV_get_long(&value->vlu_desc, node->nod_scale); + SINT64 rc = (blrOp == blr_subtract) ? l2 - l1 : l2 + l1; + + if (rc < MIN_SLONG || rc > MAX_SLONG) + ERR_post(Arg::Gds(isc_exception_integer_overflow)); + + value->make_long(rc, node->nod_scale); + + return result; +} + +// Add (or subtract) the contents of a descriptor to value block, with dialect-3 semantics, as in +// the blr_add, blr_subtract, and blr_agg_total verbs following a blr_version5. +dsc* ArithmeticNode::add2(const dsc* desc, impure_value* value, const jrd_nod* node, UCHAR blrOp) +{ + DEV_BLKCHK(node, type_nod); + + const ArithmeticNode* arithmeticNode = ExprNode::as<ArithmeticNode>(node); + + fb_assert( + (arithmeticNode && !arithmeticNode->dialect1 && + (arithmeticNode->blrOp == blr_add || arithmeticNode->blrOp == blr_subtract)) || + ExprNode::is<AggNode>(node) || node->nod_type == nod_average2); + + dsc* result = &value->vlu_desc; + + // Handle date arithmetic + + if (node->nod_flags & nod_date) + { + fb_assert(arithmeticNode); + return arithmeticNode->addDateTime(desc, value); + } + + // Handle floating arithmetic + + if (node->nod_flags & nod_double) + { + const double d1 = MOV_get_double(desc); + const double d2 = MOV_get_double(&value->vlu_desc); + + value->vlu_misc.vlu_double = (blrOp == blr_subtract) ? d2 - d1 : d1 + d2; + + if (isinf(value->vlu_misc.vlu_double)) + ERR_post(Arg::Gds(isc_arith_except) << Arg::Gds(isc_exception_float_overflow)); + + result->dsc_dtype = DEFAULT_DOUBLE; + result->dsc_length = sizeof(double); + result->dsc_scale = 0; + result->dsc_sub_type = 0; + result->dsc_address = (UCHAR*) &value->vlu_misc.vlu_double; + + return result; + } + + // Handle (oh, ugh) quad arithmetic + + if (node->nod_flags & nod_quad) + { + const SQUAD q1 = MOV_get_quad(desc, node->nod_scale); + const SQUAD q2 = MOV_get_quad(&value->vlu_desc, node->nod_scale); + + result->dsc_dtype = dtype_quad; + result->dsc_length = sizeof(SQUAD); + result->dsc_scale = node->nod_scale; + value->vlu_misc.vlu_quad = (blrOp == blr_subtract) ? + QUAD_SUBTRACT(q2, q1, ERR_post) : QUAD_ADD(q1, q2, ERR_post); + result->dsc_address = (UCHAR*) &value->vlu_misc.vlu_quad; + + return result; + } + + // Everything else defaults to int64 + + SINT64 i1 = MOV_get_int64(desc, node->nod_scale); + const SINT64 i2 = MOV_get_int64(&value->vlu_desc, node->nod_scale); + + result->dsc_dtype = dtype_int64; + result->dsc_length = sizeof(SINT64); + result->dsc_scale = node->nod_scale; + value->vlu_misc.vlu_int64 = (blrOp == blr_subtract) ? i2 - i1 : i1 + i2; + result->dsc_address = (UCHAR*) &value->vlu_misc.vlu_int64; + result->dsc_sub_type = MAX(desc->dsc_sub_type, value->vlu_desc.dsc_sub_type); + + /* If the operands of an addition have the same sign, and their sum has + the opposite sign, then overflow occurred. If the two addends have + opposite signs, then the result will lie between the two addends, and + overflow cannot occur. + If this is a subtraction, note that we invert the sign bit, rather than + negating the argument, so that subtraction of MIN_SINT64, which is + unchanged by negation, will be correctly treated like the addition of + a positive number for the purposes of this test. + + Test cases for a Gedankenexperiment, considering the sign bits of the + operands and result after the inversion below: L Rt Sum + + MIN_SINT64 - MIN_SINT64 == 0, with no overflow 1 0 0 + -MAX_SINT64 - MIN_SINT64 == 1, with no overflow 1 0 0 + 1 - MIN_SINT64 == overflow 0 0 1 + -1 - MIN_SINT64 == MAX_SINT64, no overflow 1 0 0 + */ + + if (blrOp == blr_subtract) + i1 ^= MIN_SINT64; // invert the sign bit + + if ((i1 ^ i2) >= 0 && (i1 ^ value->vlu_misc.vlu_int64) < 0) + ERR_post(Arg::Gds(isc_exception_integer_overflow)); + + return result; +} + +// Multiply two numbers, with SQL dialect-1 semantics. +// This function can be removed when dialect-3 becomes the lowest supported dialect. (Version 7.0?) +dsc* ArithmeticNode::multiply(const dsc* desc, impure_value* value) const +{ + DEV_BLKCHK(node, type_nod); + + // Handle floating arithmetic + + if (n... [truncated message content] |
From: <fir...@us...> - 2010-09-05 03:13:06
|
Revision: 51524 http://firebird.svn.sourceforge.net/firebird/?rev=51524&view=rev Author: firebirds Date: 2010-09-05 03:12:59 +0000 (Sun, 05 Sep 2010) 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 2010-09-04 21:36:41 UTC (rev 51523) +++ firebird/trunk/ChangeLog 2010-09-05 03:12:59 UTC (rev 51524) @@ -1,3 +1,46 @@ + 2010-09-04 21:36 asfernandes + M builds/posix/make.shared.variables + M builds/win32/msvc10/dsql_server.vcxproj + M builds/win32/msvc10/dsql_server.vcxproj.filters + M builds/win32/msvc10/dsql_server_classic.vcxproj + M builds/win32/msvc10/dsql_server_classic.vcxproj.filters + M builds/win32/msvc10/engine.vcxproj + M builds/win32/msvc10/engine.vcxproj.filters + M builds/win32/msvc10/engine_classic.vcxproj + M builds/win32/msvc10/engine_classic.vcxproj.filters + M builds/win32/msvc10/engine_embed.vcxproj + M builds/win32/msvc10/engine_embed.vcxproj.filters + M builds/win32/msvc9/dsql_server.vcproj + M builds/win32/msvc9/dsql_server_classic.vcproj + M builds/win32/msvc9/engine.vcproj + M builds/win32/msvc9/engine_classic.vcproj + M builds/win32/msvc9/engine_embed.vcproj + M src/dsql/AggNodes.cpp + M src/dsql/ExprNodes.cpp + M src/dsql/ExprNodes.h + M src/dsql/Nodes.h + M src/dsql/Visitors.h + M src/dsql/gen.cpp + M src/dsql/gen_proto.h + M src/dsql/make.cpp + D src/dsql/misc_func.cpp + D src/dsql/misc_func.h + M src/dsql/node.h + M src/dsql/parse.y + M src/dsql/pass1.cpp + M src/gpre/cme.cpp + M src/jrd/Optimizer.cpp + M src/jrd/cmp.cpp + M src/jrd/evl.cpp + M src/jrd/evl_proto.h + M src/jrd/exe.h + D src/jrd/misc_func_ids.h + M src/jrd/nod.h + M src/jrd/opt.cpp + M src/jrd/par.cpp + M src/misc/blrtable.cpp +Refactor a number of expression nodes: nod_add, nod_divide, nod_multiply, nod_negate, nod_user_name, nod_subtract, nod_current_date, nod_current_time, nod_current_timestamp, nod_add2, nod_subtract2, nod_multiply2, nod_divide2, nod_current_role, nod_internal_info + 2010-09-01 15:55 asfernandes M src/jrd/trig.h Fixed CORE-3101 - Cannot alter the domain after migrating from older versions Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-09-04 21:36:41 UTC (rev 51523) +++ firebird/trunk/src/jrd/build_no.h 2010-09-05 03:12:59 UTC (rev 51524) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28712 + FORMAL BUILD NUMBER:28713 */ -#define PRODUCT_VER_STRING "3.0.0.28712" -#define FILE_VER_STRING "WI-T3.0.0.28712" -#define LICENSE_VER_STRING "WI-T3.0.0.28712" -#define FILE_VER_NUMBER 3, 0, 0, 28712 +#define PRODUCT_VER_STRING "3.0.0.28713" +#define FILE_VER_STRING "WI-T3.0.0.28713" +#define LICENSE_VER_STRING "WI-T3.0.0.28713" +#define FILE_VER_NUMBER 3, 0, 0, 28713 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28712" +#define FB_BUILD_NO "28713" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-09-04 21:36:41 UTC (rev 51523) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-09-05 03:12:59 UTC (rev 51524) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28712 +BuildNum=28713 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-09-08 03:14:23
|
Revision: 51530 http://firebird.svn.sourceforge.net/firebird/?rev=51530&view=rev Author: firebirds Date: 2010-09-08 03:14:17 +0000 (Wed, 08 Sep 2010) 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 2010-09-07 16:17:05 UTC (rev 51529) +++ firebird/trunk/ChangeLog 2010-09-08 03:14:17 UTC (rev 51530) @@ -1,3 +1,7 @@ + 2010-09-07 16:17 asfernandes + M src/dsql/ExprNodes.cpp +Misc + 2010-09-04 21:36 asfernandes M builds/posix/make.shared.variables M builds/win32/msvc10/dsql_server.vcxproj Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-09-07 16:17:05 UTC (rev 51529) +++ firebird/trunk/src/jrd/build_no.h 2010-09-08 03:14:17 UTC (rev 51530) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28713 + FORMAL BUILD NUMBER:28714 */ -#define PRODUCT_VER_STRING "3.0.0.28713" -#define FILE_VER_STRING "WI-T3.0.0.28713" -#define LICENSE_VER_STRING "WI-T3.0.0.28713" -#define FILE_VER_NUMBER 3, 0, 0, 28713 +#define PRODUCT_VER_STRING "3.0.0.28714" +#define FILE_VER_STRING "WI-T3.0.0.28714" +#define LICENSE_VER_STRING "WI-T3.0.0.28714" +#define FILE_VER_NUMBER 3, 0, 0, 28714 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28713" +#define FB_BUILD_NO "28714" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-09-07 16:17:05 UTC (rev 51529) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-09-08 03:14:17 UTC (rev 51530) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28713 +BuildNum=28714 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-09-09 03:14:45
|
Revision: 51532 http://firebird.svn.sourceforge.net/firebird/?rev=51532&view=rev Author: firebirds Date: 2010-09-09 03:14:38 +0000 (Thu, 09 Sep 2010) 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 2010-09-08 18:05:28 UTC (rev 51531) +++ firebird/trunk/ChangeLog 2010-09-09 03:14:38 UTC (rev 51532) @@ -1,3 +1,7 @@ + 2010-09-08 18:05 dimitr + M src/jrd/recsrc/HashJoin.cpp +Corrections to the multi-key hashing. Thanks to Adriano. + 2010-09-07 16:17 asfernandes M src/dsql/ExprNodes.cpp Misc Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-09-08 18:05:28 UTC (rev 51531) +++ firebird/trunk/src/jrd/build_no.h 2010-09-09 03:14:38 UTC (rev 51532) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28714 + FORMAL BUILD NUMBER:28715 */ -#define PRODUCT_VER_STRING "3.0.0.28714" -#define FILE_VER_STRING "WI-T3.0.0.28714" -#define LICENSE_VER_STRING "WI-T3.0.0.28714" -#define FILE_VER_NUMBER 3, 0, 0, 28714 +#define PRODUCT_VER_STRING "3.0.0.28715" +#define FILE_VER_STRING "WI-T3.0.0.28715" +#define LICENSE_VER_STRING "WI-T3.0.0.28715" +#define FILE_VER_NUMBER 3, 0, 0, 28715 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28714" +#define FB_BUILD_NO "28715" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-09-08 18:05:28 UTC (rev 51531) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-09-09 03:14:38 UTC (rev 51532) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28714 +BuildNum=28715 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-09-10 03:14:45
|
Revision: 51543 http://firebird.svn.sourceforge.net/firebird/?rev=51543&view=rev Author: firebirds Date: 2010-09-10 03:14:38 +0000 (Fri, 10 Sep 2010) 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 2010-09-10 01:59:19 UTC (rev 51542) +++ firebird/trunk/ChangeLog 2010-09-10 03:14:38 UTC (rev 51543) @@ -1,3 +1,15 @@ + 2010-09-10 01:59 asfernandes + M doc/sql.extensions/README.update_or_insert +Fixed doc. mismatch reported by Paul Vinkenoog + + 2010-09-09 10:52 alexpeshkoff + M src/misc/src_bundle.sh +Make it cvs/svn independent + + 2010-09-09 10:16 alexpeshkoff + M src/misc/writeBuildNum.sh +Fixed package version generation for release builds + 2010-09-08 18:05 dimitr M src/jrd/recsrc/HashJoin.cpp Corrections to the multi-key hashing. Thanks to Adriano. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-09-10 01:59:19 UTC (rev 51542) +++ firebird/trunk/src/jrd/build_no.h 2010-09-10 03:14:38 UTC (rev 51543) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28715 + FORMAL BUILD NUMBER:28718 */ -#define PRODUCT_VER_STRING "3.0.0.28715" -#define FILE_VER_STRING "WI-T3.0.0.28715" -#define LICENSE_VER_STRING "WI-T3.0.0.28715" -#define FILE_VER_NUMBER 3, 0, 0, 28715 +#define PRODUCT_VER_STRING "3.0.0.28718" +#define FILE_VER_STRING "WI-T3.0.0.28718" +#define LICENSE_VER_STRING "WI-T3.0.0.28718" +#define FILE_VER_NUMBER 3, 0, 0, 28718 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28715" +#define FB_BUILD_NO "28718" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-09-10 01:59:19 UTC (rev 51542) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-09-10 03:14:38 UTC (rev 51543) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28715 +BuildNum=28718 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-09-14 03:06:10
|
Revision: 51553 http://firebird.svn.sourceforge.net/firebird/?rev=51553&view=rev Author: firebirds Date: 2010-09-14 03:06:00 +0000 (Tue, 14 Sep 2010) 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 2010-09-13 15:02:40 UTC (rev 51552) +++ firebird/trunk/ChangeLog 2010-09-14 03:06:00 UTC (rev 51553) @@ -1,106597 +0,0 @@ - 2010-09-10 01:59 asfernandes - M doc/sql.extensions/README.update_or_insert -Fixed doc. mismatch reported by Paul Vinkenoog - - 2010-09-09 10:52 alexpeshkoff - M src/misc/src_bundle.sh -Make it cvs/svn independent - - 2010-09-09 10:16 alexpeshkoff - M src/misc/writeBuildNum.sh -Fixed package version generation for release builds - - 2010-09-08 18:05 dimitr - M src/jrd/recsrc/HashJoin.cpp -Corrections to the multi-key hashing. Thanks to Adriano. - - 2010-09-07 16:17 asfernandes - M src/dsql/ExprNodes.cpp -Misc - - 2010-09-04 21:36 asfernandes - M builds/posix/make.shared.variables - M builds/win32/msvc10/dsql_server.vcxproj - M builds/win32/msvc10/dsql_server.vcxproj.filters - M builds/win32/msvc10/dsql_server_classic.vcxproj - M builds/win32/msvc10/dsql_server_classic.vcxproj.filters - M builds/win32/msvc10/engine.vcxproj - M builds/win32/msvc10/engine.vcxproj.filters - M builds/win32/msvc10/engine_classic.vcxproj - M builds/win32/msvc10/engine_classic.vcxproj.filters - M builds/win32/msvc10/engine_embed.vcxproj - M builds/win32/msvc10/engine_embed.vcxproj.filters - M builds/win32/msvc9/dsql_server.vcproj - M builds/win32/msvc9/dsql_server_classic.vcproj - M builds/win32/msvc9/engine.vcproj - M builds/win32/msvc9/engine_classic.vcproj - M builds/win32/msvc9/engine_embed.vcproj - M src/dsql/AggNodes.cpp - M src/dsql/ExprNodes.cpp - M src/dsql/ExprNodes.h - M src/dsql/Nodes.h - M src/dsql/Visitors.h - M src/dsql/gen.cpp - M src/dsql/gen_proto.h - M src/dsql/make.cpp - D src/dsql/misc_func.cpp - D src/dsql/misc_func.h - M src/dsql/node.h - M src/dsql/parse.y - M src/dsql/pass1.cpp - M src/gpre/cme.cpp - M src/jrd/Optimizer.cpp - M src/jrd/cmp.cpp - M src/jrd/evl.cpp - M src/jrd/evl_proto.h - M src/jrd/exe.h - D src/jrd/misc_func_ids.h - M src/jrd/nod.h - M src/jrd/opt.cpp - M src/jrd/par.cpp - M src/misc/blrtable.cpp -Refactor a number of expression nodes: nod_add, nod_divide, nod_multiply, nod_negate, nod_user_name, nod_subtract, nod_current_date, nod_current_time, nod_current_timestamp, nod_add2, nod_subtract2, nod_multiply2, nod_divide2, nod_current_role, nod_internal_info - - 2010-09-01 15:55 asfernandes - M src/jrd/trig.h -Fixed CORE-3101 - Cannot alter the domain after migrating from older versions - - 2010-09-01 15:54 asfernandes - M src/jrd/jrd.h -Fix warning - - 2010-08-31 11:17 dimitr - M builds/win32/msvc9/dsql_server.vcproj - M builds/win32/msvc9/dsql_server_classic.vcproj -Fixed MSVC9 build. - - 2010-08-31 00:20 asfernandes - M src/jrd/Optimizer.cpp - M src/jrd/Optimizer.h - M src/jrd/RecordSourceNodes.h - M src/jrd/evl.cpp - M src/jrd/evl_proto.h - M src/jrd/exe.h - M src/jrd/nod.h - M src/jrd/opt.cpp - M src/jrd/recsrc/BitmapTableScan.cpp - M src/jrd/recsrc/IndexTableScan.cpp - M src/jrd/recsrc/RecordSource.cpp - M src/jrd/recsrc/RecordSource.h -Refactor nod_index and nod_bit_* to InversionNode - - 2010-08-31 00:12 asfernandes - M doc/README.build.msvc.html - M src/jrd/RecordSourceNodes.cpp -Misc - - 2010-08-30 15:39 asfernandes - M src/jrd/nod.h -Small cleanup - - 2010-08-29 20:20 asfernandes - M src/jrd/Optimizer.cpp - M src/jrd/Optimizer.h - M src/jrd/RecordSourceNodes.cpp - M src/jrd/RecordSourceNodes.h - M src/jrd/exe.h - M src/jrd/nod.h - M src/jrd/opt.cpp - M src/jrd/par.cpp - M src/misc/blrtable.cpp -Refactor plan nodes to PlanNode - - 2010-08-29 18:25 asfernandes - M src/jrd/exe.cpp - M src/jrd/exe.h - M src/jrd/nod.h -Cleanup - - 2010-08-29 18:20 asfernandes - M src/dsql/Visitors.h - M src/jrd/Optimizer.cpp - M src/jrd/Optimizer.h - M src/jrd/RecordSourceNodes.cpp - M src/jrd/RecordSourceNodes.h - M src/jrd/cmp.cpp - M src/jrd/exe.h - M src/jrd/nod.h - M src/jrd/opt.cpp - M src/jrd/opt_proto.h - M src/jrd/par.cpp - M src/jrd/par_proto.h - M src/jrd/recsrc/AggregatedStream.cpp - M src/jrd/recsrc/HashJoin.cpp - M src/jrd/recsrc/MergeJoin.cpp - M src/jrd/recsrc/RecordSource.h - M src/jrd/recsrc/RecursiveStream.cpp - M src/jrd/recsrc/Union.cpp - M src/jrd/recsrc/WindowedStream.cpp - M src/misc/blrtable.cpp -Refactor nod_map and nod_sort to type-safe MapNode and SortNode - - 2010-08-28 12:41 dimitr - M src/jrd/opt.cpp -Fixed CORE-2155: Join of SP with view or table may fail with 'No current record for fetch operation'. - - 2010-08-28 08:52 dimitr - M src/jrd/cmp.cpp -Fixed the engine crash caused by the recent refactoring. - - 2010-08-27 15:14 asfernandes - M builds/win32/msvc10/dsql_server.vcxproj - M builds/win32/msvc10/dsql_server.vcxproj.filters - M builds/win32/msvc10/dsql_server_classic.vcxproj - M builds/win32/msvc10/dsql_server_classic.vcxproj.filters -Fix MSVC10 build - - 2010-08-27 02:55 asfernandes - M src/jrd/dyn.epp -Fixed CORE-3109 - [Crash] isc_dql_exec_immed3_m for "create database ..." and NULL transaction - - 2010-08-27 02:18 asfernandes - M builds/posix/make.shared.variables - M src/dsql/DSqlDataTypeUtil.cpp - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - A src/dsql/DsqlCompilerScratch.cpp - A src/dsql/DsqlCompilerScratch.h - M src/dsql/Nodes.h - M src/dsql/StmtNodes.cpp - M src/dsql/StmtNodes.h - M src/dsql/dsql.h - M src/dsql/gen.cpp - M src/dsql/misc_func.cpp - M src/dsql/pass1.cpp - M src/dsql/pass1_proto.h -1) Separate DsqlCompilerScratch in its own files. -2) Move BlockNode functionality to it. -3) Move some related CTE functions to it. - - 2010-08-26 15:40 asfernandes - M src/jrd/Function.epp - M src/jrd/Function.h - M src/jrd/fun.epp -Misc - - 2010-08-25 15:52 asfernandes - M src/jrd/RecordSourceNodes.cpp - M src/jrd/RecordSourceNodes.h - M src/jrd/exe.h - M src/jrd/recsrc/RecordSource.h - M src/jrd/recsrc/WindowedStream.cpp -Rework WindowSourceNode to use type-safe partitions - - 2010-08-25 13:36 mapopa - M doc/README.build.msvc.html -Added links to visual c++ studio 2008 - - 2010-08-25 13:25 mapopa - M doc/README.build.msvc.html -Added unicode/classic innosetup note (we are not using unicode version for the moment , only for 3.0 maybe in the future) - - 2010-08-25 12:00 mapopa - M doc/README.build.msvc.html -added innosetup 5 to the build instructions - - 2010-08-25 10:16 mapopa - M doc/README.build.msvc.html -added sed instructions - - 2010-08-25 08:02 dimitr - M src/jrd/cmp.cpp -Fixed a few suspicious places related to the variable cloning. - - 2010-08-25 03:10 asfernandes - M src/jrd/RecordSourceNodes.cpp - M src/jrd/RecordSourceNodes.h - M src/jrd/exe.h - M src/jrd/opt.cpp - M src/jrd/rse.h -Move dozen of parameters of virtual/overriden function to OptimizerBlk - - 2010-08-25 01:35 asfernandes - M src/jrd/RecordSourceNodes.cpp - M src/jrd/RecordSourceNodes.h - M src/jrd/opt.cpp -Misc - - 2010-08-25 01:01 asfernandes - M src/jrd/RecordSourceNodes.cpp -Remove do-nothing checks from the new file - - 2010-08-25 00:42 asfernandes - M src/jrd/cmp.cpp - M src/jrd/met.epp -Misc - - 2010-08-24 17:49 dimitr - M src/jrd/opt.cpp -Refactored the rivers management a bit. - - 2010-08-24 16:26 asfernandes - M src/jrd/cmp.cpp -Correction - - 2010-08-24 11:58 dimitr - M src/dsql/ExprNodes.cpp -Fixed incomplete processing of UDF arguments, causing server crashes. - - 2010-08-24 08:27 firebirds - M mkChangeLog.sh -Fixed correct buildno in 2.5 - - 2010-08-24 03:25 asfernandes - M builds/posix/make.shared.variables - M builds/win32/msvc10/engine.vcxproj - M builds/win32/msvc10/engine.vcxproj.filters - M builds/win32/msvc10/engine_classic.vcxproj - M builds/win32/msvc10/engine_classic.vcxproj.filters - M builds/win32/msvc10/engine_embed.vcxproj - M builds/win32/msvc10/engine_embed.vcxproj.filters - M builds/win32/msvc9/engine.vcproj - M builds/win32/msvc9/engine_classic.vcproj - M builds/win32/msvc9/engine_embed.vcproj - M src/dsql/ExprNodes.cpp - M src/dsql/Nodes.h - M src/dsql/StmtNodes.cpp - M src/dsql/StmtNodes.h - M src/dsql/Visitors.h - M src/jrd/Attachment.h - M src/jrd/Optimizer.cpp - M src/jrd/Optimizer.h - A src/jrd/RecordSourceNodes.cpp - A src/jrd/RecordSourceNodes.h - M src/jrd/Relation.h - M src/jrd/cmp.cpp - M src/jrd/cmp_proto.h - M src/jrd/exe.cpp - M src/jrd/exe.h - M src/jrd/jrd.h - M src/jrd/lls.h - M src/jrd/met.epp - M src/jrd/nod.h - M src/jrd/opt.cpp - M src/jrd/opt_proto.h - M src/jrd/par.cpp - M src/jrd/par_proto.h - M src/jrd/recsrc/RecordSource.h - M src/jrd/recsrc/Union.cpp - M src/misc/blrtable.cpp -Refactor nod_rse, nod_relation, nod_procedure, nod_union, nod_aggregate and nod_window. - - 2010-08-16 01:47 asfernandes - M src/misc/blrtable.cpp -Fix wrong nod_type of scrollable cursors - - 2010-08-13 15:22 asfernandes - M src/common/classes/NestConst.h - M src/jrd/ExtEngineManager.cpp - M src/jrd/ExtEngineManager.h - M src/jrd/Function.h - M src/jrd/ValuesImpl.h - M src/jrd/cmp.cpp - M src/jrd/cmp_proto.h - M src/jrd/exe.h - M src/jrd/jrd.h - M src/jrd/met.epp - M src/jrd/par.cpp - M src/jrd/recsrc/ProcedureScan.cpp - M src/jrd/recsrc/RecordSource.cpp - M src/jrd/recsrc/RecordSource.h -More consts - - 2010-08-13 09:37 firebirds - M mkChangeLog.sh -per-branch consts - - 2010-08-13 08:41 firebirds - M src/misc/smallog.cpp -Better handling of commits to be skipped - - 2010-08-12 10:32 robocop - M src/jrd/exe.h - M src/jrd/par.cpp -Misc. - - 2010-08-12 00:59 asfernandes - M src/dsql/ExprNodes.cpp - M src/jrd/JrdStatement.cpp - M src/jrd/JrdStatement.h - M src/jrd/exe.cpp - M src/jrd/exe.h -More consts - - 2010-08-11 15:33 asfernandes - M src/common/classes/NestConst.h - M src/dsql/StmtNodes.h -Misc - - 2010-08-11 15:22 firebirds - M src/misc/smallog.cpp -make output in brnches better - - 2010-08-11 02:59 asfernandes - M src/dsql/ExprNodes.cpp - M src/dsql/ExprNodes.h - M src/dsql/StmtNodes.cpp - M src/jrd/exe.h - M src/jrd/met.epp - M src/jrd/nod.h - M src/jrd/par.cpp -Better internal handling of dependencies - - 2010-08-10 15:20 asfernandes - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/StmtNodes.h - M src/dsql/parse.y -Misc - - 2010-08-10 11:08 alexpeshkoff - A mkChangeLog.sh -BuildNum and ChangeLog generator - - 2010-08-10 10:42 alexpeshkoff - M src/misc/writeBuildNum.sh -misc - - 2010-08-10 07:49 alexpeshkoff - M ChangeLog -rolled back test change - - 2010-08-10 00:37 asfernandes - M src/dsql/DdlNodes.epp - M src/jrd/btr.cpp - M src/jrd/exe.h -Misc - - 2010-08-09 16:06 asfernandes - M src/dsql/ExprNodes.cpp - M src/dsql/Nodes.h - M src/dsql/WinNodes.cpp - M src/jrd/Optimizer.cpp -Correct double indirection (jrd_nod**) so const cascades to every dereference - - 2010-08-09 15:48 asfernandes - M builds/win32/msvc10/common.vcxproj - M builds/win32/msvc10/common.vcxproj.filters - M builds/win32/msvc10/common_classic.vcxproj - M builds/win32/msvc10/common_classic.vcxproj.filters - M builds/win32/msvc10/common_static.vcxproj - M builds/win32/msvc10/common_static.vcxproj.filters - M builds/win32/msvc8/common.vcproj - M builds/win32/msvc8/common_classic.vcproj - M builds/win32/msvc8/common_static.vcproj - M builds/win32/msvc9/common.vcproj - M builds/win32/msvc9/common_classic.vcproj - M builds/win32/msvc9/common_static.vcproj - A src/common/classes/NestConst.h - M src/dsql/AggNodes.cpp - M src/dsql/AggNodes.h - M src/dsql/ExprNodes.cpp - M src/dsql/ExprNodes.h - M src/dsql/Nodes.h - M src/dsql/StmtNodes.cpp - M src/dsql/StmtNodes.h - M src/dsql/WinNodes.cpp - M src/dsql/WinNodes.h - M src/jrd/ExtEngineManager.cpp - M src/jrd/ExtEngineManager.h - M src/jrd/Function.epp - M src/jrd/Function.h - M src/jrd/Optimizer.cpp - M src/jrd/Optimizer.h - M src/jrd/SysFunction.cpp - M src/jrd/SysFunction.h - M src/jrd/blb.cpp - M src/jrd/blb_proto.h - M src/jrd/btr.cpp - M src/jrd/btr_proto.h - M src/jrd/cmp.cpp - M src/jrd/evl.cpp - M src/jrd/evl_proto.h - M src/jrd/exe.cpp - M src/jrd/exe.h - M src/jrd/exe_proto.h - M src/jrd/execute_statement.cpp - M src/jrd/execute_statement.h - M src/jrd/extds/ExtDS.cpp - M src/jrd/extds/ExtDS.h - M src/jrd/fun.epp - M src/jrd/fun_proto.h - M src/jrd/met.epp - M src/jrd/opt.cpp - M src/jrd/par.cpp - M src/jrd/recsrc/AggregatedStream.cpp - M src/jrd/recsrc/Cursor.cpp - M src/jrd/recsrc/Cursor.h - M src/jrd/recsrc/FilteredStream.cpp - M src/jrd/recsrc/HashJoin.cpp - M src/jrd/recsrc/MergeJoin.cpp - M src/jrd/recsrc/ProcedureScan.cpp - M src/jrd/recsrc/RecordSource.h - M src/jrd/recsrc/RecursiveStream.cpp - M src/jrd/recsrc/SortedStream.cpp - M src/jrd/recsrc/Union.cpp - M src/jrd/recsrc/WindowedStream.cpp - M src/jrd/req.h - M src/jrd/trace/TraceJrdHelpers.h -Const correction for EVL, EXE and they subsystems. Adjustments to CMP and OPT. - - 2010-08-09 14:50 dimitr - M doc/sql.extensions/README.builtin_functions.txt -CORE-3102 (minor documentation mistake) - - 2010-08-09 13:56 alexpeshkoff - M configure.in - M src/common/classes/DbImplementation.cpp - M src/jrd/common.h -Damian's patch for additional CPUs under linux - - 2010-08-09 11:50 robocop - M src/common/classes/Nullable.h - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/Nodes.h - M src/msgs/facilities2.sql -Misc. - - 2010-08-07 21:18 hvlad - M src/common/classes/ClumpletReader.cpp - M src/jrd/extds/ExtDS.cpp -Fixed bug CORE-3100 : Wait mode and lock timeout of external transaction of EXECUTE STATEMENT not matched to corresponding parameters of local transaction - - 2010-08-07 15:49 asfernandes - M src/jrd/exe.cpp -Hope this assumption to be correct - - 2010-08-07 02:44 asfernandes - M src/jrd/dyn.epp - M src/jrd/dyn_def.epp - M src/jrd/dyn_df_proto.h -Misc - - 2010-08-07 02:43 asfernandes - M src/dsql/pass1.cpp -Correction for CORE-3090 - - 2010-08-07 02:38 asfernandes - M src/jrd/extds/IscDS.cpp -Misc - - 2010-08-07 02:10 asfernandes - M src/dsql/pass1.cpp - M src/jrd/Optimizer.cpp -Frontport fix for CORE-3090 - Incorrect LEFT JOIN result using table and derived constant subquery - - 2010-08-06 15:16 alexpeshkoff - M builds/posix/Makefile.in.fbserver -Mistyped - thanks to Adriano - - 2010-08-06 15:16 hvlad - M src/jrd/extds/IscDS.cpp -Fixed bug CORE-3089 : Attempt of execute statement on external datasource failed when datasource is interbase 4.1 - - 2010-08-05 15:55 asfernandes - M src/dsql/dsql.cpp - M src/jrd/DatabaseSnapshot.cpp - M src/jrd/JrdStatement.cpp - M src/jrd/JrdStatement.h - M src/jrd/SysFunction.cpp - M src/jrd/evl.cpp - M src/jrd/exe.cpp - M src/jrd/exe.h - M src/jrd/jrd.cpp - M src/jrd/opt.cpp - M src/jrd/req.h -1) Better organization between request and statement. 2) Consts. - - 2010-08-05 00:47 asfernandes - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/Nodes.h - M src/dsql/PackageNodes.epp - M src/dsql/PackageNodes.h - M src/dsql/parse.y -Simplification - - 2010-08-05 00:44 asfernandes - M src/jrd/SysFunction.cpp - M src/jrd/exe.cpp -Fix DDL triggers - - 2010-08-04 15:50 asfernandes - M src/jrd/cmp.cpp -Frontport fix for CORE-3094 - Parameters doesn't work with NOT IN from a selectable procedure - - 2010-08-04 02:22 asfernandes - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/PackageNodes.h -Misc: "explicit" with more than one parameter is unnecessary - - 2010-08-04 01:48 asfernandes - M src/dsql/PackageNodes.epp -Correction for ALTER PACKAGE source code storage - - 2010-08-04 01:41 asfernandes - M src/dsql/PackageNodes.epp - M src/dsql/PackageNodes.h -Use RecreateNode in package commands - - 2010-08-03 01:09 asfernandes - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h -Corrections - - 2010-08-02 23:13 asfernandes - M src/dsql/DdlNodes.h -Fix GCC build - - 2010-08-02 15:58 asfernandes - M src/dsql/BlrWriter.h - M src/dsql/DdlNodes.epp -Suggestions of Claudio - - 2010-08-02 15:47 asfernandes - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/parse.y -Create template for RECREATE commands - - 2010-08-02 02:22 asfernandes - M lang_helpers/gds_codes.ftn - M lang_helpers/gds_codes.pas - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/ddl.cpp - M src/dsql/dsql.h - M src/dsql/metd.epp - M src/dsql/metd_proto.h - M src/dsql/node.h - M src/dsql/parse.y - 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/jrd/drq.h - M src/jrd/dyn.epp - M src/jrd/dyn_def.epp - M src/jrd/dyn_del.epp - M src/jrd/dyn_df_proto.h - M src/jrd/dyn_dl_proto.h - M src/jrd/dyn_md_proto.h - M src/jrd/dyn_mod.epp - M src/jrd/dyn_ut_proto.h - M src/jrd/dyn_util.epp - M src/msgs/facilities2.sql - M src/msgs/messages2.sql - M src/msgs/system_errors2.sql -Refactor CREATE/ALTER/CREATE OR ALTER/RECREATE VIEW and cleanup related to previously refactors - - 2010-07-31 18:40 asfernandes - M src/jrd/SysFunction.cpp -Fixed CORE-3091 - Built-in function POWER(X, Y) does not work when the X argument is negative and the Y value is scaled numeric but integral - - 2010-07-30 14:13 asfernandes - M src/dsql/DdlNodes.epp -Fix problem noticed by Claudio - - 2010-07-29 00:36 asfernandes - M src/include/gen/msgs.h - M src/jrd/dfw.epp - M src/jrd/tra.h - M src/jrd/vio.cpp - M src/msgs/messages2.sql -Better error reporting and adjustments - - 2010-07-29 00:20 asfernandes - A src/common/classes/Nullable.h - M src/common/classes/TriState.h - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/PackageNodes.epp - M src/dsql/Parser.h - M src/dsql/btyacc_fb.ske - M src/dsql/keywords.cpp - M src/dsql/parse.y - M src/jrd/PreparedStatement.h -Rename misleading TriStateType class name to Nullable - - 2010-07-28 16:14 asfernandes - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/Parser.h - M src/dsql/parse.y - M src/jrd/dfw.epp - M src/jrd/tra.h - M src/jrd/vio.cpp -Improvement CORE-3085 - Add clause ALTER DOMAIN <name> [NOT] NULL - - 2010-07-27 09:27 dimitr - M builds/win32/msvc9/fb_inet_server.vcproj - M builds/win32/msvc9/fbserver.vcproj - M builds/win32/msvc9/gsec.vcproj -Fixed MSVC9 build. - - 2010-07-26 23:05 asfernandes - M builds/win32/msvc10/fb_inet_server.vcxproj - M builds/win32/msvc10/fb_inet_server.vcxproj.filters - M builds/win32/msvc10/fbserver.vcxproj - M builds/win32/msvc10/fbserver.vcxproj.filters - M builds/win32/msvc10/gsec.vcxproj - M builds/win32/msvc10/gsec.vcxproj.filters -Fix MSVC10 build - - 2010-07-26 10:51 hvlad - M src/jrd/dfw.epp -Fixed bug CORE-3079 : Strong slowing down inserts with EVENT-s in a single transaction - - 2010-07-26 02:37 asfernandes - M lang_helpers/gds_codes.ftn - M lang_helpers/gds_codes.pas - M src/common/classes/ByteChunk.h - M src/common/classes/objects_array.h - M src/dsql/BlrWriter.h - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/Nodes.h - M src/dsql/PackageNodes.epp - M src/dsql/PackageNodes.h - M src/dsql/ddl.cpp - M src/dsql/ddl_proto.h - M src/dsql/dsql.h - M src/dsql/node.h - M src/dsql/parse.y - M src/dsql/pass1.cpp - M src/gpre/gpre.h - 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/constants.h - M src/jrd/drq.h - M src/jrd/dyn.epp - M src/jrd/dyn_def.epp - M src/jrd/dyn_del.epp - M src/jrd/dyn_df_proto.h - M src/jrd/dyn_dl_proto.h - M src/jrd/dyn_md_proto.h - M src/jrd/dyn_mod.epp - M src/jrd/dyn_ut_proto.h - M src/jrd/dyn_util.epp - M src/msgs/facilities2.sql - M src/msgs/messages2.sql - M src/msgs/system_errors2.sql -Refactor CREATE/ALTER/DROP/RECREATE TABLE and DROP VIEW commands - - 2010-07-26 02:14 asfernandes - M src/burp/backup.epp - M src/jrd/ini.epp -Create system constraints for better error reporting. Change to GBAK must be backported to avoid future problems. - - 2010-07-24 11:22 hvlad - M src/common/classes/Interface.h -Correction. - - 2010-07-24 08:33 hvlad - M builds/win32/msvc8/utilities.vcproj -Correction. Thanks to Adriano. - - 2010-07-24 02:43 asfernandes - M src/auth/AuthDbg.cpp - M src/auth/AuthInterface.h - M src/auth/SecurityDatabase/LegacyManagement.epp - M src/auth/SecurityDatabase/LegacyManagement.h - M src/auth/trusted/AuthSspi.cpp - M src/common/classes/ImplementHelper.h - M src/common/classes/Interface.h - M src/dbs/security.sql - M src/jrd/gds.cpp - M src/jrd/os/posix/mod_loader.cpp - M src/remote/server.cpp - M src/utilities/gsec/security.cpp -Misc - - 2010-07-23 14:39 hvlad - M src/auth/SecurityDatabase/LegacyManagement.epp - M src/remote/interface.cpp -Forgotten changes - - 2010-07-23 14:31 hvlad - M src/remote/interface.cpp - M src/remote/os/win32/srvr_w32.cpp -Make trusted auth works - - 2010-07-23 14:06 hvlad - M builds/win32/defs/fbclient.def - M builds/win32/make_boot.bat - M builds/win32/msvc8/gsec.vcproj - M builds/win32/msvc8/utilities.vcproj - M builds/win32/preprocess.bat - M src/auth/SecurityDatabase/LegacyClient.cpp - M src/auth/trusted/AuthSspi.cpp - M src/auth/trusted/AuthSspi.h - M src/jrd/pwd.cpp - M src/remote/os/win32/srvr_w32.cpp -Make Windows build work (MSVC8 only) after Alex changes. -Some corrections is still required. - - 2010-07-23 14:01 alexpeshkoff - M src/jrd/svc.cpp -gsec always worked only with SYSDBA - thx to Vlad - - 2010-07-23 12:04 alexpeshkoff - M builds/posix/Makefile.in.client.gsec - M builds/posix/Makefile.in.embed.util - M builds/posix/Makefile.in.fbserver - M builds/posix/Makefile.in.firebird - M builds/posix/Makefile.in.smp_server - A builds/posix/Makefile.in.user.management - M builds/posix/firebird.vers - M builds/posix/make.defaults - M builds/posix/make.rules - M builds/posix/make.shared.variables - M configure.in - M src/auth/Auth.cpp - M src/auth/Auth.h - A src/auth/AuthDbg.cpp - A src/auth/AuthDbg.h - M src/auth/AuthInterface.h - M src/auth/SecurityDatabase/LegacyClient.cpp - M src/auth/SecurityDatabase/LegacyClient.h - A src/auth/SecurityDatabase/LegacyManagement.epp (from /firebird/trunk/src/utilities/gsec/security.epp:51339) - A src/auth/SecurityDatabase/LegacyManagement.h - A src/common/classes/ImplementHelper.h - M src/common/classes/Interface.h - M src/dbs/security.sql - M src/include/FirebirdPluginApi.h - M src/include/gen/ids.h - M src/jrd/PluginManager.h - M src/jrd/fields.h - M src/jrd/gds.cpp - M src/jrd/idx.h - M src/jrd/ini.epp - M src/jrd/jrd_pwd.h - M src/jrd/names.h - M src/jrd/os/posix/mod_loader.cpp - M src/jrd/pwd.cpp - M src/jrd/relations.h - A src/misc/smallog.cpp - M src/plugins/udr_engine/UdrEngine.cpp - M src/remote/interface.cpp - M src/remote/server.cpp - A src/utilities/gsec/security.cpp (from /firebird/trunk/src/utilities/gsec/security.epp:51354) - D src/utilities/gsec/security.epp -Implemented self-registering plugins format (same plugin can be easily linked statically -or as dynamic library, depending upon platform requirements). Self-registering plugins -need not export any functions, instead they call fb_register_plugin() on startup. -Reworked all user management to use self-registering plugins. -Removed system table RDB$USERS. PLG$USERS is not created automatically by plugin, but -will be later (work in progress). - - 2010-07-22 09:36 alexpeshkoff - M src/utilities/ntrace/TracePluginImpl.h - M src/utilities/ntrace/TraceUnicodeUtils.h -Fixed gcc warning - No newline at end of file - - 2010-07-15 00:47 asfernandes - M builds/posix/Makefile.in.firebird - M src/jrd/UserManagement.cpp - M src/jrd/svc.cpp - M src/utilities/gsec/gsec.cpp - M src/utilities/gsec/secur_proto.h - M src/utilities/gsec/security.epp -Misc - - 2010-07-13 12:33 dimitr - D src/jrd/recsrc/UsersTableScan.cpp -Reworked the SEC$USERS implementation so that no new physical table type and data access method would be required. More changes are likely to follow soon. - - 2010-07-13 12:32 dimitr - M builds/posix/make.shared.variables -Reworked the SEC$USERS implementation so that no new physical table type and data access method would be required. More changes are likely to follow soon. - - 2010-07-13 12:31 dimitr - M builds/win32/msvc10/engine.vcxproj - M builds/win32/msvc10/engine.vcxproj.filters - M builds/win32/msvc10/engine_classic.vcxproj - M builds/win32/msvc10/engine_classic.vcxproj.filters - M builds/win32/msvc10/engine_embed.vcxproj - M builds/win32/msvc10/engine_embed.vcxproj.filters - M builds/win32/msvc9/engine.vcproj - M builds/win32/msvc9/engine_classic.vcproj - M builds/win32/msvc9/engine_embed.vcproj - M src/jrd/Database.h - M src/jrd/DatabaseSnapshot.cpp - M src/jrd/DatabaseSnapshot.h - M src/jrd/Relation.h - M src/jrd/UserManagement.cpp - M src/jrd/UserManagement.h - M src/jrd/constants.h - M src/jrd/met.epp - M src/jrd/opt.cpp - M src/jrd/recsrc/RecordSource.h - M src/jrd/recsrc/VirtualTableScan.cpp - M src/jrd/relations.h - M src/jrd/types.h -Reworked the SEC$USERS implementation so that no new physical table type and data access method would be required. More changes are likely to follow soon. - - 2010-07-13 11:03 dimitr - M src/dsql/BlrWriter.h -Get rid of the annoying warnings. - - 2010-07-13 10:31 dimitr - M src/utilities/gsec/gsec.h -Misc. - - 2010-07-13 07:05 dimitr - M src/jrd/isc_sync.cpp -Mirror the recent Alex's change for Windows. It doesn't seem being strictly required, but let's be safe. - - 2010-07-12 15:51 asfernandes - M builds/win32/msvc10/engine.vcxproj - M builds/win32/msvc10/engine.vcxproj.filters - M builds/win32/msvc10/engine_classic.vcxproj - M builds/win32/msvc10/engine_classic.vcxproj.filters - M builds/win32/msvc10/engine_embed.vcxproj - M builds/win32/msvc10/engine_embed.vcxproj.filters -Fix MSVC10 build - - 2010-07-12 08:09 hvlad - M src/jrd/extds/ExtDS.cpp -Fixed unregistered bug in EXECUTE STATEMENT : make internal cache of prepared statements work properly. - - 2010-07-11 18:21 asfernandes - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/Nodes.h - M src/dsql/ddl.cpp - M src/dsql/metd.epp - M src/dsql/metd_proto.h - M src/dsql/node.h - M src/dsql/parse.y - M src/dsql/pass1.cpp - M src/jrd/dyn.epp - M src/jrd/dyn_def.epp - M src/jrd/dyn_del.epp - M src/jrd/dyn_df_proto.h - M src/jrd/dyn_dl_proto.h - M src/jrd/dyn_md_proto.h - M src/jrd/dyn_mod.epp -Refactor CREATE/ALTER/CREATE OR ALTER/RECREATE/DROP EXCEPTION commands - - 2010-07-10 08:35 robocop - M builds/win32/msvc9/engine.vcproj - M builds/win32/msvc9/engine_classic.vcproj - M builds/win32/msvc9/engine_embed.vcproj -Fix project files. - - 2010-07-10 08:33 robocop - M src/jrd/DatabaseSnapshot.h - M src/jrd/svc.cpp - M src/msgs/facilities2.sql -Misc. - - 2010-07-10 08:32 robocop - M src/jrd/UserManagement.cpp -Fix compilation error. - - 2010-07-09 12:51 alexpeshkoff - M builds/posix/Makefile.in.firebird - M builds/posix/make.shared.variables - M src/dbs/security.sql - M src/include/gen/ids.h - M src/jrd/DatabaseSnapshot.cpp - M src/jrd/DatabaseSnapshot.h - M src/jrd/Relation.h - M src/jrd/UserManagement.cpp - M src/jrd/UserManagement.h - M src/jrd/constants.h - M src/jrd/fields.h - M src/jrd/idx.h - M src/jrd/ini.epp - M src/jrd/met.epp - M src/jrd/names.h - M src/jrd/opt.cpp - M src/jrd/recsrc/RecordSource.h - A src/jrd/recsrc/UsersTableScan.cpp - M src/jrd/relations.h - M src/jrd/svc.cpp - M src/jrd/types.h - M src/msgs/facilities2.sql - M src/msgs/messages2.sql - M src/utilities/gsec/gsec.cpp - M src/utilities/gsec/gsec.h - M src/utilities/gsec/gsecswi.h - M src/utilities/gsec/secur_proto.h - M src/utilities/gsec/security.epp -ODS change: made RDB$USERS system table, added virtual table SEC$USERS - - 2010-07-09 11:04 alexpeshkoff - M src/jrd/isc_sync.cpp -Fixed CORE-3067: Objects not unmapped when shared memory is closed - - 2010-07-08 10:44 dimitr - M src/common/classes/fb_pair.h -Fixed the old bug which was left unnoticed until RC3 where Pair<MetaName, MetaName> was used as a key for a b-tree. -At the first glance, it promises only wrong ordering of items, but in fact it trashes the b-tree internals and crashes the server :-( -It's unregistered and undocumented, but being a very recent RC3 only regression, let's leave it this way. -I suppose the intended code should be !(v.first < this->first), but we have the operator == defined, so I used a simpler form. - - 2010-07-06 11:09 asfernandes - M src/jrd/recsrc/AggregatedStream.cpp - M src/jrd/recsrc/BufferedStream.cpp - M src/jrd/recsrc/NestedLoopJoin.cpp - M src/jrd/recsrc/ProcedureScan.cpp - M src/jrd/recsrc/RecordSource.h - M src/jrd/recsrc/SortedStream.cpp - M src/jrd/recsrc/WindowedStream.cpp -More const correctness - - 2010-07-06 09:10 robocop - M src/dsql/DdlNodes.epp -Misc. - - 2010-07-06 00:49 asfernandes - M builds/win32/msvc10/common.vcxproj - M builds/win32/msvc10/common_classic.vcxproj - M builds/win32/msvc10/common_static.vcxproj - M builds/win32/msvc8/common.vcproj - M builds/win32/msvc8/common_classic.vcproj - M builds/win32/msvc8/common_static.vcproj - M builds/win32/msvc9/common.vcproj - M builds/win32/msvc9/common_classic.vcproj - M builds/win32/msvc9/common_static.vcproj - A src/common/classes/ByteChunk.h - M src/dsql/BlrWriter.h - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/Nodes.h - M src/dsql/Parser.h - M src/dsql/ddl.cpp - M src/dsql/dsql.h - M src/dsql/node.h - M src/dsql/parse.y - M src/dsql/pass1.cpp - M src/jrd/Attachment.cpp - M src/jrd/Attachment.h - M src/jrd/drq.h - M src/jrd/dyn.epp - M src/jrd/dyn_def.epp - M src/jrd/dyn_del.epp - M src/jrd/dyn_df_proto.h - M src/jrd/dyn_dl_proto.h - M src/jrd/dyn_md_proto.h - M src/jrd/dyn_mod.epp - M src/jrd/ini.epp -Refactor CREATE/ALTER/DROP DOMAIN - - 2010-07-05 18:37 asfernandes - M src/jrd/recsrc/AggregatedStream.cpp - M src/jrd/recsrc/BitmapTableScan.cpp - M src/jrd/recsrc/BufferedStream.cpp - M src/jrd/recsrc/Cursor.cpp - M src/jrd/recsrc/Cursor.h - M src/jrd/recsrc/ExternalTableScan.cpp - M src/jrd/recsrc/FilteredStream.cpp - M src/jrd/recsrc/FirstRowsStream.cpp - M src/jrd/recsrc/FullOuterJoin.cpp - M src/jrd/recsrc/FullTableScan.cpp - M src/jrd/recsrc/HashJoin.cpp - M src/jrd/recsrc/IndexTableScan.cpp - M src/jrd/recsrc/LockedStream.cpp - M src/jrd/recsrc/MergeJoin.cpp - M src/jrd/recsrc/NestedLoopJoin.cpp - M src/jrd/recsrc/ProcedureScan.cpp - M src/jrd/recsrc/RecordSource.cpp - M src/jrd/recsrc/RecordSource.h - M src/jrd/recsrc/RecursiveStream.cpp - M src/jrd/recsrc/SingularStream.cpp - M src/jrd/recsrc/SkipRowsStream.cpp - M src/jrd/recsrc/SortedStream.cpp - M src/jrd/recsrc/Union.cpp - M src/jrd/recsrc/VirtualTableScan.cpp - M src/jrd/recsrc/WindowedStream.cpp -Constify RecordSource methods - these classes are shared pieces of a (shared) statement - - 2010-07-02 10:43 dimitr - M src/dsql/pass1.cpp -Fixed CORE-3064: Using the procedure alias inside an explicit plan crashes the server. - - 2010-06-30 21:29 hvlad - M builds/win32/msvc10/build_msg.vcxproj - M builds/win32/msvc10/codes.vcxproj -VC10 build: leave build_msg.exe and codes.exe at intermediate build folder else make_boot failed - - 2010-06-30 21:27 hvlad - M builds/win32/msvc10/firebird2.props -VC10 build: don't put .bsc files into target build folder - - 2010-06-30 08:55 robocop - M src/dsql/StmtNodes.cpp - M src/dsql/gen.cpp - M src/jrd/event.h - M src/jrd/isc_file.cpp - M src/jrd/isc_sync.cpp - M src/lock/lock_proto.h - M src/lock/print.cpp - M src/msgs/facilities2.sql -Misc. - - 2010-06-30 08:54 robocop - M src/jrd/gds.cpp -Correction. - - 2010-06-29 16:22 asfernandes - M builds/win32/msvc10/btyacc.vcxproj - M builds/win32/msvc10/build_msg.vcxproj - M builds/win32/msvc10/codes.vcxproj - M builds/win32/msvc10/fb2control.vcxproj - M builds/win32/msvc10/fb_inet_server.vcxproj - M builds/win32/msvc10/fb_lock_print.vcxproj - M builds/win32/msvc10/fbclient.vcxproj - M builds/win32/msvc10/fbembed.vcxproj - M builds/win32/msvc10/fbguard.vcxproj - M builds/win32/msvc10/fbrmclib.vcxproj - M builds/win32/msvc10/fbserver.vcxproj - M builds/win32/msvc10/fbsvcmgr.vcxproj - M builds/win32/msvc10/fbtrace.vcxproj - M builds/win32/msvc10/fbtracemgr.vcxproj - M builds/win32/msvc10/fbudf.vcxproj - M builds/win32/msvc10/gbak.vcxproj - M builds/win32/msvc10/gbak_embed.vcxproj - M builds/win32/msvc10/gfix.vcxproj - M builds/win32/msvc10/gpre.vcxproj - M builds/win32/msvc10/gpre_boot.vcxproj - M builds/win32/msvc10/gpre_embed.vcxproj - M builds/win32/msvc10/gsec.vcxproj - M builds/win32/msvc10/gsplit.vcxproj - M builds/win32/msvc10/gstat.vcxproj - M builds/win32/msvc10/ib_udf.vcxproj - M builds/win32/msvc10/ib_util.vcxproj - M builds/win32/msvc10/instclient.vcxproj - M builds/win32/msvc10/instreg.vcxproj - M builds/win32/msvc10/instsvc.vcxproj - M builds/win32/msvc10/intl.vcxproj - M builds/win32/msvc10/isql.vcxproj - M builds/win32/msvc10/isql_embed.vcxproj - M builds/win32/msvc10/nbackup.vcxproj - M builds/win32/msvc10/qli.vcxproj - M builds/win32/msvc10/udr_engine.vcxproj -Fix run from MSVC10 IDE - - 2010-06-29 16:19 asfernandes - M src/jrd/dyn_def.epp -Misc - - 2010-06-28 16:49 asfernandes - M builds/win32/msvc10/Firebird2Boot.sln -Fixed MSVC10 boot build - - 2010-06-28 09:46 alexpeshkoff - M src/jrd/event_proto.h -cleanup - - 2010-06-28 09:38 alexpeshkoff - M src/jrd/event.cpp -Fixed some bugs, related with remapping fo events shared memory - thanks to Adriano - - 2010-06-27 03:47 asfernandes - A builds/win32/msvc10 - A builds/win32/msvc10/DllNoEmbedManifest.props - A builds/win32/msvc10/Firebird2.sln - A builds/win32/msvc10/Firebird2Boot.sln - A builds/win32/msvc10/Firebird2_Examples.sln - A builds/win32/msvc10/alice.vcxproj - A builds/win32/msvc10/alice.vcxproj.filters - A builds/win32/msvc10/btyacc.vcxproj - A builds/win32/msvc10/btyacc.vcxproj.filters - A builds/win32/msvc10/build_msg.vcxproj - A builds/win32/msvc10/build_msg.vcxproj.filters - A builds/win32/msvc10/burp.vcxproj - A builds/win32/msvc10/burp.vcxproj.filters - A builds/win32/msvc10/codes.vcxproj - A builds/win32/msvc10/codes.vcxproj.filters - A builds/win32/msvc10/common.vcxproj - A builds/win32/msvc10/common.vcxproj.filters - A builds/win32/msvc10/common_classic.vcxproj - A builds/win32/msvc10/common_classic.vcxproj.filters - A builds/win32/msvc10/common_static.vcxproj - A builds/win32/msvc10/common_static.vcxproj.filters - A builds/win32/msvc10/config.vcxproj - A builds/win32/msvc10/config.vcxproj.filters - A builds/win32/msvc10/dsql_server.vcxproj - A builds/win32/msvc10/dsql_server.vcxproj.filters - A builds/win32/msvc10/dsql_server_classic.vcxproj - A builds/win32/msvc10/dsql_server_classic.vcxproj.filters - A builds/win32/msvc10/empbuild.vcxproj - A builds/win32/msvc10/empbuild.vcxproj.filters - A builds/win32/msvc10/engine.vcxproj - A builds/win32/msvc10/engine.vcxproj.filters - A builds/win32/msvc10/engine_classic.vcxproj - A builds/win32/msvc10/engine_classic.vcxproj.filters - A builds/win32/msvc10/engine_embed.vcxproj - A builds/win32/msvc10/engine_embed.vcxproj.filters - A builds/win32/msvc10/fb2control.vcxproj - A builds/win32/msvc10/fb2control.vcxproj.filters - A builds/win32/msvc10/fb_inet_server.vcxproj - A builds/win32/msvc10/fb_inet_server.vcxproj.filters - A builds/win32/msvc10/fb_lock_print.vcxproj - A builds/win32/msvc10/fb_lock_print.vcxproj.filters - A builds/win32/msvc10/fbclient.vcxproj - A builds/win32/msvc10/fbclient.vcxproj.filters - A builds/win32/msvc10/fbembed.vcxproj - A builds/win32/msvc10/fbembed.vcxproj.filters - A builds/win32/msvc10/fbguard.vcxproj - A builds/win32/msvc10/fbguard.vcxproj.filters - A builds/win32/msvc10/fbrmclib.vcxproj - A builds/win32/msvc10/fbrmclib.vcxproj.filters - A builds/win32/msvc10/fbserver.vcxproj - A builds/win32/msvc10/fbserver.vcxproj.filters - A builds/win32/msvc10/fbsvcmgr.vcxproj - A builds/win32/msvc10/fbsvcmgr.vcxproj.filters - A builds/win32/msvc10/fbtrace.vcxproj - A builds/win32/msvc10/fbtrace.vcxproj.filters - A builds/win32/msvc10/fbtracemgr.vcxproj - A builds/win32/msvc10/fbtracemgr.vcxproj.filters - A builds/win32/msvc10/fbudf.vcxproj - A builds/win32/msvc10/fbudf.vcxproj.filters - A builds/win32/msvc10/firebird2.props - A builds/win32/msvc10/firebird2debug.props - A builds/win32/msvc10/firebird2release.props - A builds/win32/msvc10/gbak.vcxproj - A builds/win32/msvc10/gbak.vcxproj.filters - A builds/win32/msvc10/gbak_embed.vcxproj - A builds/win32/msvc10/gbak_embed.vcxproj.filters - A builds/win32/msvc10/gfix.vcxproj - A builds/win32/msvc10/gfix.vcxproj.filters - A builds/win32/msvc10/gpre.vcxproj - A builds/win32/msvc10/gpre.vcxproj.filters - A builds/win32/msvc10/gpre_boot.vcxproj - A builds/win32/msvc10/gpre_boot.vcxproj.filters - A builds/win32/msvc10/gpre_embed.vcxproj - A builds/win32/msvc10/gpre_embed.vcxproj.filters - A builds/win32/msvc10/gsec.vcxproj - A builds/win32/msvc10/gsec.vcxproj.filters - A builds/win32/msvc10/gsplit.vcxproj - A builds/win32/msvc10/gsplit.vcxproj.filters - A builds/win32/msvc10/gstat.vcxproj - A builds/win32/msvc10/gstat.vcxproj.filters - A builds/win32/msvc10/ib_udf.vcxproj - A builds/win32/msvc10/ib_udf.vcxproj.filters - A builds/win32/msvc10/ib_util.vcxproj - A builds/win32/msvc10/ib_util.vcxproj.filters - A builds/win32/msvc10/instclient.vcxproj - A builds/win32/msvc10/instclient.vcxproj.filters - A builds/win32/msvc10/instreg.vcxproj - A builds/win32/msvc10/instreg.vcxproj.filters - A builds/win32/msvc10/instsvc.vcxproj - A builds/win32/msvc10/instsvc.vcxproj.filters - A builds/win32/msvc10/intl.vcxproj - A builds/win32/msvc10/intl.vcxproj.filters - A builds/win32/msvc10/intlbuild.vcxproj - A builds/win32/msvc10/intlbuild.vcxproj.filters - A builds/win32/msvc10/isql.vcxproj - A builds/win32/msvc10/isql.vcxproj.filters - A builds/win32/msvc10/isql_embed.vcxproj - A builds/win32/msvc10/isql_embed.vcxproj.filters - A builds/win32/msvc10/lock.vcxproj - A builds/win32/msvc10/lock.vcxproj.filters - A builds/win32/msvc10/lock_classic.vcxproj - A builds/win32/msvc10/lock_classic.vcxproj.filters - A builds/win32/msvc10/nbackup.vcxproj - A builds/win32/msvc10/nbackup.vcxproj.filters - A builds/win32/msvc10/qli.vcxproj - A builds/win32/msvc10/qli.vcxproj.filters - A builds/win32/msvc10/remote.vcxproj - A builds/win32/msvc10/remote.vcxproj.filters - A builds/win32/msvc10/udr_engine.vcxproj - A builds/win32/msvc10/udr_engine.vcxproj.filters - A builds/win32/msvc10/udrcpp_example.vcxproj - A builds/win32/msvc10/udrcpp_example.vcxproj.filters - M builds/win32/setenvvar.bat - A extern/icu/source/allinone/allinone_10.sln - A extern/icu/source/allinone/firebird2debug.props - A extern/icu/source/allinone/firebird2intl.props - A extern/icu/source/allinone/firebird2release.props - A extern/icu/source/common/common_10.vcxproj - A extern/icu/source/common/common_10.vcxproj.filters - A extern/icu/source/data/makedata_10.vcxproj - A extern/icu/source/data/makedata_10.vcxproj.filters - A extern/icu/source/extra/uconv/uconv_10.vcxproj - A extern/icu/source/extra/uconv/uconv_10.vcxproj.filters - A extern/icu/source/i18n/i18n_10.vcxproj - A extern/icu/source/i18n/i18n_10.vcxproj.filters - A extern/icu/source/io/io_10.vcxproj - A extern/icu/source/io/io_10.vcxproj.filters - A extern/icu/source/layout/layout_10.vcxproj - A extern/icu/source/layout/layout_10.vcxproj.filters - A extern/icu/source/layoutex/layoutex_10.vcxproj - A extern/icu/source/layoutex/layoutex_10.vcxproj.filters - A extern/icu/source/stubdata/stubdata_10.vcxproj - A extern/icu/source/stubdata/stubdata_10.vcxproj.filters - A extern/icu/source/test/cintltst/cintltst_10.vcxproj - A extern/icu/source/test/cintltst/cintltst_10.vcxproj.filters - A extern/icu/source/test/intltest/intltest_10.vcxproj - A extern/icu/source/test/intltest/intltest_10.vcxproj.filters - A extern/icu/source/test/iotest/iotest_10.vcxproj - A extern/icu/source/test/iotest/iotest_10.vcxproj.filters - A extern/icu/source/tools/ctestfw/ctestfw_10.vcxproj - A extern/icu/source/tools/ctestfw/ctestfw_10.vcxproj.filters - A extern/icu/source/tools/genbrk/genbrk_10.vcxproj - A extern/icu/source/tools/genbrk/genbrk_10.vcxproj.filters - A extern/icu/source/tools/genccode/genccode_10.vcxproj - A extern/icu/source/tools/genccode/genccode_10.vcxproj.filters - A extern/icu/source/tools/gencmn/decmn_10.vcxproj - A extern/icu/source/tools/gencmn/decmn_10.vcxproj.filters - A extern/icu/source/tools/gencmn/gencmn_10.vcxproj - A extern/icu/source/tools/gencmn/gencmn_10.vcxproj.filters - A extern/icu/source/tools/gencnval/gencnval_10.vcxproj - A extern/icu/source/tools/gencnval/gencnval_10.vcxproj.filters - A extern/icu/source/tools/gennames/gennames_10.vcxproj - A extern/icu/source/tools/gennames/gennames_10.vcxproj.filters - A extern/icu/source/tools/gennorm/gennorm_10.vcxproj - A extern/icu/source/tools/gennorm/gennorm_10.vcxproj.filters - A extern/icu/source/tools/genpname/genpname_10.vcxproj - A extern/icu/source/tools/genpname/genpname_10.vcxproj.filters - A extern/icu/source/tools/genprops/genprops_10.vcxproj - A extern/icu/source/tools/genprops/genprops_10.vcxproj.filters - A extern/icu/source/tools/genrb/derb_10.vcxproj - A extern/icu/source/tools/genrb/derb_10.vcxproj.filters - A extern/icu/source/tools/genrb/genrb_10.vcxproj - A extern/icu/source/tools/genrb/genrb_10.vcxproj.filters - A extern/icu/source/tools/gensprep/gensprep_10.vcxproj - A extern/icu/source/tools/gensprep/gensprep_10.vcxproj.filters - A extern/icu/source/tools/gentest/gentest_10.vcxproj - A extern/icu/source/tools/gentest/gentest_10.vcxproj.filters - A extern/icu/source/tools/genuca/genuca_10.vcxproj - A extern/icu/source/tools/genuca/genuca_10.vcxproj.filters - A extern/icu/source/tools/icuswap/icuswap_10.vcxproj - A extern/icu/source/tools/icuswap/icuswap_10.vcxproj.filters - A extern/icu/source/tools/makeconv/makeconv_10.vcxproj - A extern/icu/source/tools/makeconv/makeconv_10.vcxproj.filters - A extern/icu/source/tools/pkgdata/pkgdata_10.vcxproj - A extern/icu/source/tools/pkgdata/pkgdata_10.vcxproj.filters - A extern/icu/source/tools/toolutil/toolutil_10.vcxproj - A extern/icu/source/tools/toolutil/toolutil_10.vcxproj.filters - M src/jrd/gds.cpp - M src/jrd/os/win32/mod_loader.cpp -MSVC10 support - - 2010-06-26 02:50 asfernandes - M src/dsql/DdlNodes.epp - M src/dsql/ddl.cpp - M src/dsql/metd.epp - M src/dsql/metd_proto.h - M src/jrd/irq.h -Cleanup - - 2010-06-26 02:30 asfernandes - M src/dsql/DdlNodes.epp - M src/dsql/ddl.cpp - M src/dsql/metd.epp - M src/dsql/metd_proto.h -Misc - - 2010-06-26 01:52 asfernandes - M lang_helpers/gds_codes.ftn - M lang_helpers/gds_codes.pas - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/ddl.cpp - M src/dsql/node.h - M src/dsql/parse.y - 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/jrd/Attachment.cpp - M src/jrd/Attachment.h - M src/jrd/drq.h - M src/jrd/dyn.epp - M src/jrd/dyn.h - M src/jrd/dyn_def.epp - M src/jrd/dyn_del.epp - M src/jrd/dyn_df_proto.h - M src/jrd/dyn_dl_proto.h - M src/msgs/messages2.sql - M src/msgs/system_errors2.sql -Refactor CREATE/DROP COLLATION - - 2010-06-26 01:18 asfernandes - M src/jrd/event_proto.h - M src/jrd/isc_s_proto.h - M src/jrd/isc_sync.cpp - M src/jrd/trace/TraceConfigStorage.h - M src/lock/lock.cpp - M src/lock/lock_proto.h - M src/lock/print.cpp -Misc - - 2010-06-25 12:16 hvlad - M src/jrd/isc_sync.cpp -Cleanup - - 2010-06-25 11:55 alexpeshkoff - M src/jrd/DatabaseSnapshot.cpp - M src/jrd/DatabaseSnapshot.h - M src/jrd/cch.h - M src/jrd/dbt.cpp - M src/jrd/event.cpp - M src/jrd/event.h - M src/jrd/event_proto.h - D src/jrd/isc.h - M src/jrd/isc_s_proto.h - M src/jrd/isc_sync.cpp - M src/jrd/os/win32/isc_ipc.cpp - M src/jrd/trace/TraceConfigStorage.cpp - M src/jrd/trace/TraceConfigStorage.h - M src/jrd/trace/TraceLog.cpp - M src/jrd/trace/TraceLog.h - M src/jrd/trace/TraceObjects.h - M src/lock/driver.cpp - M src/lock/lock.cpp - M src/lock/lock_proto.h - M src/lock/print.cpp - M src/remote/os/win32/property.cpp - M src/remote/os/win32/window.cpp - M src/utilities/drop.cpp -Introduced class SharedMemory - base class for everything, using IPC. Related to CORE-3035. - - 2010-06-25 06:45 hvlad - M builds/win32/msvc8/dsql_server.vcproj - M builds/win32/msvc8/dsql_server_classic.vcproj -Update MSVC8 build - - 2010-06-23 13:36 hvlad - M src/remote/server.cpp -Disable hard limit on number of worker threads. Something more smart should be implemented instead. - - 2010-06-22 00:56 asfernandes - M src/dsql/dsql.h -Misc - - 2010-06-22 00:53 asfernandes - M src/dsql/AggNodes.cpp - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/ExprNodes.cpp - M src/dsql/StmtNodes.cpp - M src/dsql/ddl.cpp - M src/dsql/dsql.h - M src/dsql/gen.cpp - M src/dsql/pass1.cpp - M src/jrd/DatabaseSnapshot.h - M src/jrd/isc_sync.cpp - M src/jrd/met.epp - M src/lock/lock.cpp -Misc/cleanup - - 2010-06-20 23:11 asfernandes - M src/dsql/parse.y -Misc - - 2010-06-20 14:49 asfernandes - M src/dsql/ExprNodes.cpp - M src/dsql/ExprNodes.h - M src/dsql/Nodes.h - M src/dsql/ddl.cpp - M src/dsql/ddl_proto.h -Improvement CORE-3057 - Allow the usage of blobs in COMPUTED BY expressions - - 2010-06-20 03:11 asfernandes - M src/dsql/StmtNodes.cpp -Fixed CORE-3047 - Wrong logic is used to resolve EXECUTE BLOCK parameters collations - - 2010-06-20 03:09 asfernandes - M src/dsql/ddl.cpp - M src/dsql/dsql.cpp -Fixed CORE-3047 - Wrong logic is used to resolve EXECUTE BLOCK parameters collations - - 2010-06-18 16:48 asfernandes - M src/dsql/node.h - M src/dsql/pass1.cpp -Cleanup - - 2010-06-18 13:13 asfernandes - M doc/sql.extensions/README.builtin_functions.txt -Misc - - 2010-06-18 12:49 asfernandes - M src/jrd/dfw.epp - M src/jrd/drq.h - M src/jrd/dyn_def.epp - M src/jrd/irq.h -Fixed CORE-3056 - Problems may happen when issuing DDL commands in the same transaction after CREATE COLLATION was issued - - 2010-06-18 12:41 asfernandes - M doc/sql.extensions/README.update_or_insert -Misc - - 2010-06-18 11:15 asfernandes - M src/jrd/unicode_util.cpp -Fix problem seen by Vlad where crash happens when our older ICU is found - - 2010-06-17 16:06 asfernandes - M src/dsql/ddl.cpp - M src/dsql/dsql.h - M src/dsql/gen.cpp -Change suggested by Claudio - - 2010-06-17 15:32 asfernandes - M src/jrd/DebugInterface.cpp -Fixed CORE-3055 - Variable/argument name could be absent or be wrong in error messages when more than 256 variables are used - - 2010-06-17 14:27 dimitr - M src/remote/xnet.cpp -Fixed a lock-up when connecting locally to the missing database file. The issue is old, but it could never fire prior to v3.0. - - 2010-06-17 07:34 alexpeshkoff - M src/jrd/DatabaseSnapshot.cpp - M src/jrd/DatabaseSnapshot.h - M src/jrd/event.cpp - M src/jrd/event_proto.h - M src/jrd/isc_s_proto.h - M src/jrd/isc_sync.cpp - M src/jrd/trace/TraceConfigStorage.cpp - M src/jrd/trace/TraceConfigStorage.h - M src/jrd/trace/TraceLog.cpp - M src/jrd/trace/TraceLog.h - M src/lock/lock.cpp - M src/lock/lock_proto.h -frontported fix for CORE-3021: Segfault in DEV_BUILD - - 2010-06-17 01:18 asfernandes - M builds/posix/make.shared.variables - M builds/win32/msvc9/dsql_server.vcproj - M builds/win32/msvc9/dsql_server_classic.vcproj - M src/dsql/AggNodes.cpp - A src/dsql/BlrWriter.cpp - A src/dsql/BlrWriter.h - M src/dsql/DdlNodes.epp - M src/dsql/ExprNodes.cpp - M src/dsql/Nodes.h - M src/dsql/StmtNodes.cpp - M src/dsql/ddl.cpp - M src/dsql/dsql.cpp - M src/dsql/dsql.h - M src/dsql/gen.cpp - M src/dsql/gen_proto.h - M src/dsql/pass1.cpp -Created class BlrWriter and reorganization (move BLR generation from statement to scratch) - - 2010-06-16 16:28 dimitr - M src/jrd/gds.cpp -Fixed unregistered error in the BLR printer output. - - 2010-06-16 12:44 alexpeshkoff - M src/dsql/StmtNodes.cpp -Fixed segfault during DEV_BUILD - - 2010-06-15 16:07 asfernandes - M src/dsql/DdlNodes.epp - M src/dsql/DdlNodes.h - M src/dsql/Nodes.h - M src/dsql/StmtNodes.cpp - M src/dsql/StmtNodes.h - M src/dsql/ddl.cpp - M src/dsql/ddl_proto.h - M src/dsql/dsql.cpp - M src/dsql/gen.cpp - M src/dsql/gen_proto.h - M src/dsql/parse.y - M src/dsql/pass1.cpp - M src/dsql/pass1_proto.h -1) Refactor PSQL support in DSQL. This started as subprocedure implementation, but I'm now separating things. -2) Fix thrown of isc_bad_default_value - - 2010-06-15 15:20 asfernandes - M builds/posix/make.rules -Do not remove cpp files generated from epp ones - - 2010-06-15 12:27 alexpeshkoff - M src/jrd/Relation.h - M src/jrd/cmp.cpp - M src/jrd/dfw.epp - M src/jrd/lck.cpp - M src/jrd/lck.h - M src/jrd/met.epp -Fixed CORE-3024: Error "no current record for fetch operation" after ALTER VIEW (and a lot of other possible inconsistencies) - - 2010-06-15 11:57 alexpeshkoff - M src/jrd/evl.cpp -Fixed CORE-3046: Assertion after ALTER TABLE - - 2010-06-12 16:32 asfernandes - M src/jrd/met.epp -Misc - - 2010-06-12 16:28 asfernandes - M src/common/classes/MetaName.h - M src/dsql/metd_proto.h - M src/jrd/exe.h - M src/jrd/par.cpp -Fixed CORE-3038 - The insert failed because a column definition includes validation - - 2010-06-10 16:08 asfernandes - M src/jrd/common.h - M src/jrd/gds.cpp -Fix debug code - - 2010-06-10 08:41 alexpeshkoff - M src/gpre/c_cxx.cpp -frontported fix for CORE-3022: gpre C++ compiler warnings with GCC 4.4.1 - - 2010-06-10 02:03 asfernandes - M src/dsql/StmtNodes.cpp - M src/dsql/StmtNodes.h - M src/dsql/dsql.h - M src/dsql/gen.cpp - M src/dsql/node.h - M src/dsql/parse.y - M src/dsql/pass1.cpp -Improvement CORE-3020 - Add clause RETURNING ... INTO ... to MERGE statement - - 2010-06-09 11:53 alexpeshkoff - M builds/install/arch-specific/linux/misc/firebird.init.d.gentoo.in -frontported fix for CORE-3019: Startup failure of SS and SC on linux gentoo - - 2010-06-08 14:44 paulbeach - M builds/posix/postfix.darwin - M builds/posix/prefix.darwin_i386 - M builds/posix/prefix.darwin_x86_64 - M extern/icu/source/config/mh-darwin -Grand Central Dispatch - 10.6 Darwin only - - 2010-06-08 13:35 alexpeshkoff - M src/common/classes/semaphore.cpp - M src/common/classes/semaphore.h -Mac port - use dispatch semaphores - - 2010-06-08 13:35 alexpeshkoff - M builds/make.new/config/install-sh -misc - - 2010-06-06 22:24 hvlad - M ChangeLog -Update ChangeLog from latest CVS version - - 2010-06-05 00:48 asfernandes - M src/jrd/build_no.h - M src/misc/writeBuildNum.sh -Current build no (ported from CVS) - - 2010-06-05 00:48 asfernandes - M src/jrd/DatabaseSnapshot.cpp - M src/jrd/cch.cpp - M src/jrd/isc.h - M src/jrd/isc_s_proto.h - M src/jrd/isc_sync.cpp - M src/jrd/trace/TraceConfigStorage.cpp -Port from CVS Vlad's fixes for CORE-3015, CORE-3016 and CORE-3017 - - 2010-06-04 23:14 asfernandes - M ChangeLog - M Makefile.in - M acx_pthread.m4 - M autogen.sh - M binreloc.m4 - M builds/install/arch-specific/aix/Makefile.in - M builds/install/arch-specific/aix/classic/makeInstallImage.sh.in - M builds/install/arch-specific/aix/classic/rpmfiles.txt.in - M builds/install/arch-specific/aix/classic/rpmheader.txt.in - M builds/install/arch-specific/aix/misc/aixLibrary.sh.in - M builds/install/arch-specific/aix/misc/firebird.init.d.aix.in - M builds/install/arch-specific/aix/misc/postinstall.sh.in - M builds/install/arch-specific/aix/misc/postuninstall.sh.in - M builds/install/arch-specific/aix/misc/preinstall.sh.in - M builds/install/arch-specific/aix/misc/preuninstall.sh.in - M builds/install/arch-specific/aix/misc/rc.config.firebird.aix.in - M builds/install/arch-specific/aix/misc/tarinstall.sh.in - M builds/install/arch-specific/aix/misc/tarmaininstall.sh.in - M builds/install/arch-specific/aix/misc/tarmainuninstall.sh.in - M builds/install/arch-specific/aix/misc/taruninstall.sh.in - M builds/install/arch-specific/darwin/Description.plist - M builds/install/arch-specific/darwin/FB.info - M builds/install/arch-specific/darwin/Firebird.startupitem/Firebird - M builds/install/arch-specific/darwin/Firebird.startupitem/Resources/English.lproj/Localizable.strings - M builds/install/arch-specific/darwin/Firebird.startupitem/StartupParameters.plist - M builds/install/arch-specific/darwin/FrameworkInfo.plist - M builds/install/arch-specific/darwin/Info.plist - M builds/install/arch-specific/darwin/License.txt - M builds/install/arch-specific/darwin/Makefile.in - M builds/install/arch-specific/darwin/PkgInfo - M builds/install/arch-specific/darwin/Readme.txt - M builds/install/arch-specific/darwin/Welcome.txt - M builds/install/arch-specific/darwin/aliases.conf.in - M builds/install/arch-specific/darwin/buildno.c - M builds/install/arch-specific/darwin/buildsuffix.c - M builds/install/arch-specific/darwin/changeMultiConnectMode - M builds/install/arch-specific/darwin/fullvers.c - M builds/install/arch-specific/darwin/install-script - M builds/install/arch-specific/darwin/launchd.org.firebird.gds.plist - M builds/install/arch-specific/darwin/majorvers.c - M builds/install/arch-specific/darwin/minorvers.c - M builds/install/arch-specific/darwin/preinstall-script - M builds/install/arch-specific/darwin/preupgrade-script - M builds/install/arch-specific/darwin/revno.c - M builds/install/arch-specific/freebsd/Makefile.in - M builds/install/arch-specific/freebsd/freebsdLibrary.sh.in - M builds/install/arch-specific/freebsd/install.sh.in - M builds/install/arch-specific/hpux/Makefile.in - M builds/install/arch-specific/hpux/classic/firebirdCS.psf.in - M builds/install/arch-specific/hpux/classic/makeinstallImage.sh.in - M builds/install/arch-specific/hpux/classic/postInstall.sh.in - M builds/install/arch-specific/hpux/classic/postUninstall.sh.in - M builds/install/arch-specific/hpux/classic/preInstall.sh.in - M builds/install/arch-specific/hpux/classic/preUninstall.sh.in - M builds/install/arch-specific/hpux/classic/tarInstall.sh.in - M builds/install/arch-specific/hpux/classic/tarUninstall.sh.in - M builds/install/arch-specific/hpux/classic/tarmainInstall.sh.in - M builds/install/arch-specific/hpux/classic/tarmainUninstall.sh.in - M builds/install/arch-specific/hpux/misc/changedbaPassword.sh.in - M builds/install/arch-specific/hpux/misc/changegdslibrarycompatibleLink.sh.in - M builds/install/arch-specific/hpux/misc/createaliasDB.sh.in - M builds/install/arch-specific/hpux/misc/firebird.init.d.hpux.in - M builds/install/arch-specific/hpux/misc/hpuxLibrary.sh.in - M builds/install/arch-specific/hpux/misc/rc.config.firebird.hpux.in - M builds/install/arch-specific/hpux/super/makeinstallImage.sh.in - M builds/install/arch-specific/hpux/super/postInstall.sh.in - M builds/install/arch-specific/hpux/super/postUninstall.sh.in - M builds/install/arch-specific/hpux/super/preInstall.sh.in - M builds/install/arch-specific/hpux/super/preUninstall.sh.in - M builds/install/arch-specific/hpux/super/tarInstall.sh.in - M builds/install/arch-specific/hpux/super/tarUninstall.sh.in - M builds/install/arch-specific/hpux/super/tarmainInstall.sh.in - M builds/install/arch-specific/hpux/super/tarmainUninstall.sh.in - M builds/install/arch-specific/linux/Makefile.in - M builds/install/arch-specific/linux/classic/rpmfiles.txt.in - M builds/install/arch-specific/linux/classic/rpmheader.txt.in - M builds/install/arch-specific/linux/misc/README - M builds/install/arch-specific/linux/misc/firebird.init.d.debian.in - M builds/install/arch-specific/linux/misc/firebird.init.d.generic.in - M builds/install/arch-specific/linux/misc/firebird.init.d.gentoo.in - M builds/install/arch-specific/linux/misc/firebird.init.d.mandrake.in - M builds/install/arch-specific/linux/misc/firebird.init.d.slackware.in - M builds/install/arch-specific/linux/misc/firebird.init.d.suse.in - M builds/install/arch-specific/linux/misc/firebird.xinetd.in - M builds/install/arch-specific/linux/misc/linuxLibrary.sh.in - M builds/install/arch-specific/linux/misc/makeInstallImage.sh.in - M builds/install/arch-specific/linux/misc/postinstall.sh.in - M builds/install/arch-specific/linux/misc/postuninstall.sh.in - M builds/install/arch-specific/linux/misc/preinstall.sh.in - M builds/install/arch-specific/linux/misc/preuninstall.sh.in - M builds/install/arch-specific/linux/misc/rc.config.firebird.in - M builds/install/arch-specific/linux/misc/tarMainInstall.sh.in - M builds/install/arch-specific/linux/misc/tarMainUninstall.sh.in - M builds/install/arch-specific/linux/misc/tarinstall.sh.in - M builds/install/arch-specific/linux/misc/taruninstall.sh.in - M builds/install/arch-specific/linux/super/rpmfiles.txt.in - M builds/install/arch-specific/linux/super/rpmheader.txt.in - M builds/install/arch-specific/mingw/Makefile.in - M builds/install/arch-specific/mingw/super/Readme.txt - M builds/install/arch-specific/netbsd/Makefile.in - M builds/install/arch-specific/netbsd/install.sh.in - M builds/install/arch-specific/solaris/CS/gds_db-tcp.xml - M builds/install/arch-specific/solaris/CS/pkginfo.in - M builds/install/arch-specific/solaris/CS/postinstall.in - M builds/install/arch-specific/solaris/CS/postremove.in - M builds/install/arch-specific/solaris/CS/preinstall.in - M builds/install/arch-specific/solaris/CS/prototype.icu.in - M builds/install/arch-specific/solaris/CS/prototype.in - M builds/install/arch-specific/solaris/Makefile.in - M builds/install/arch-specific/solaris/SS/gds_db-tcp.xml - M builds/install/arch-specific/solaris/SS/pkginfo.in - M builds/install/arch-specific/solaris/SS/postinstall.in - M builds/install/arch-specific/solaris/SS/postremove.in - M builds/install/arch-specific/solaris/SS/preinstall.in - M builds/install/arch-specific/solaris/SS/prototype.icu.in - M builds/install/arch-specific/solaris/SS/prototype.in - M builds/install/arch-specific/solaris/libgcc/pkginfolg.in - M builds/install/arch-specific/solaris/libgcc/prototypelg.in - M builds/install/arch-specific/solx86/Makefile.in - M builds/install/arch-specific/win32/After_Installation.url - M builds/install/arch-specific/win32/BuildExecutableInstall.bat - M builds/install/arch-specific/win32/FirebirdInstallEnvironmentChecks.inc - M builds/install/arch-specific/win32/FirebirdInstallSupportFunctions.inc - M builds/install/arch-specific/w... [truncated message content] |
From: <fir...@us...> - 2010-09-15 03:18:32
|
Revision: 51558 http://firebird.svn.sourceforge.net/firebird/?rev=51558&view=rev Author: firebirds Date: 2010-09-15 03:18:23 +0000 (Wed, 15 Sep 2010) 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 2010-09-14 08:11:55 UTC (rev 51557) +++ firebird/trunk/ChangeLog 2010-09-15 03:18:23 UTC (rev 51558) @@ -0,0 +1,106605 @@ + 2010-09-14 07:06 alexpeshkoff + M doc/README.UserSql +Fixed documentation + + 2010-09-13 14:58 dimitr + M src/intl/collations/win1257_lv.h +Fixed CORE-3131: WIN1257_LV (Latvian) collation is wrong for 4 letters: A E I U. + + 2010-09-10 01:59 asfernandes + M doc/sql.extensions/README.update_or_insert +Fixed doc. mismatch reported by Paul Vinkenoog + + 2010-09-09 10:52 alexpeshkoff + M src/misc/src_bundle.sh +Make it cvs/svn independent + + 2010-09-09 10:16 alexpeshkoff + M src/misc/writeBuildNum.sh +Fixed package version generation for release builds + + 2010-09-08 18:05 dimitr + M src/jrd/recsrc/HashJoin.cpp +Corrections to the multi-key hashing. Thanks to Adriano. + + 2010-09-07 16:17 asfernandes + M src/dsql/ExprNodes.cpp +Misc + + 2010-09-04 21:36 asfernandes + M builds/posix/make.shared.variables + M builds/win32/msvc10/dsql_server.vcxproj + M builds/win32/msvc10/dsql_server.vcxproj.filters + M builds/win32/msvc10/dsql_server_classic.vcxproj + M builds/win32/msvc10/dsql_server_classic.vcxproj.filters + M builds/win32/msvc10/engine.vcxproj + M builds/win32/msvc10/engine.vcxproj.filters + M builds/win32/msvc10/engine_classic.vcxproj + M builds/win32/msvc10/engine_classic.vcxproj.filters + M builds/win32/msvc10/engine_embed.vcxproj + M builds/win32/msvc10/engine_embed.vcxproj.filters + M builds/win32/msvc9/dsql_server.vcproj + M builds/win32/msvc9/dsql_server_classic.vcproj + M builds/win32/msvc9/engine.vcproj + M builds/win32/msvc9/engine_classic.vcproj + M builds/win32/msvc9/engine_embed.vcproj + M src/dsql/AggNodes.cpp + M src/dsql/ExprNodes.cpp + M src/dsql/ExprNodes.h + M src/dsql/Nodes.h + M src/dsql/Visitors.h + M src/dsql/gen.cpp + M src/dsql/gen_proto.h + M src/dsql/make.cpp + D src/dsql/misc_func.cpp + D src/dsql/misc_func.h + M src/dsql/node.h + M src/dsql/parse.y + M src/dsql/pass1.cpp + M src/gpre/cme.cpp + M src/jrd/Optimizer.cpp + M src/jrd/cmp.cpp + M src/jrd/evl.cpp + M src/jrd/evl_proto.h + M src/jrd/exe.h + D src/jrd/misc_func_ids.h + M src/jrd/nod.h + M src/jrd/opt.cpp + M src/jrd/par.cpp + M src/misc/blrtable.cpp +Refactor a number of expression nodes: nod_add, nod_divide, nod_multiply, nod_negate, nod_user_name, nod_subtract, nod_current_date, nod_current_time, nod_current_timestamp, nod_add2, nod_subtract2, nod_multiply2, nod_divide2, nod_current_role, nod_internal_info + + 2010-09-01 15:55 asfernandes + M src/jrd/trig.h +Fixed CORE-3101 - Cannot alter the domain after migrating from older versions + + 2010-09-01 15:54 asfernandes + M src/jrd/jrd.h +Fix warning + + 2010-08-31 11:17 dimitr + M builds/win32/msvc9/dsql_server.vcproj + M builds/win32/msvc9/dsql_server_classic.vcproj +Fixed MSVC9 build. + + 2010-08-31 00:20 asfernandes + M src/jrd/Optimizer.cpp + M src/jrd/Optimizer.h + M src/jrd/RecordSourceNodes.h + M src/jrd/evl.cpp + M src/jrd/evl_proto.h + M src/jrd/exe.h + M src/jrd/nod.h + M src/jrd/opt.cpp + M src/jrd/recsrc/BitmapTableScan.cpp + M src/jrd/recsrc/IndexTableScan.cpp + M src/jrd/recsrc/RecordSource.cpp + M src/jrd/recsrc/RecordSource.h +Refactor nod_index and nod_bit_* to InversionNode + + 2010-08-31 00:12 asfernandes + M doc/README.build.msvc.html + M src/jrd/RecordSourceNodes.cpp +Misc + + 2010-08-30 15:39 asfernandes + M src/jrd/nod.h +Small cleanup + + 2010-08-29 20:20 asfernandes + M src/jrd/Optimizer.cpp + M src/jrd/Optimizer.h + M src/jrd/RecordSourceNodes.cpp + M src/jrd/RecordSourceNodes.h + M src/jrd/exe.h + M src/jrd/nod.h + M src/jrd/opt.cpp + M src/jrd/par.cpp + M src/misc/blrtable.cpp +Refactor plan nodes to PlanNode + + 2010-08-29 18:25 asfernandes + M src/jrd/exe.cpp + M src/jrd/exe.h + M src/jrd/nod.h +Cleanup + + 2010-08-29 18:20 asfernandes + M src/dsql/Visitors.h + M src/jrd/Optimizer.cpp + M src/jrd/Optimizer.h + M src/jrd/RecordSourceNodes.cpp + M src/jrd/RecordSourceNodes.h + M src/jrd/cmp.cpp + M src/jrd/exe.h + M src/jrd/nod.h + M src/jrd/opt.cpp + M src/jrd/opt_proto.h + M src/jrd/par.cpp + M src/jrd/par_proto.h + M src/jrd/recsrc/AggregatedStream.cpp + M src/jrd/recsrc/HashJoin.cpp + M src/jrd/recsrc/MergeJoin.cpp + M src/jrd/recsrc/RecordSource.h + M src/jrd/recsrc/RecursiveStream.cpp + M src/jrd/recsrc/Union.cpp + M src/jrd/recsrc/WindowedStream.cpp + M src/misc/blrtable.cpp +Refactor nod_map and nod_sort to type-safe MapNode and SortNode + + 2010-08-28 12:41 dimitr + M src/jrd/opt.cpp +Fixed CORE-2155: Join of SP with view or table may fail with 'No current record for fetch operation'. + + 2010-08-28 08:52 dimitr + M src/jrd/cmp.cpp +Fixed the engine crash caused by the recent refactoring. + + 2010-08-27 15:14 asfernandes + M builds/win32/msvc10/dsql_server.vcxproj + M builds/win32/msvc10/dsql_server.vcxproj.filters + M builds/win32/msvc10/dsql_server_classic.vcxproj + M builds/win32/msvc10/dsql_server_classic.vcxproj.filters +Fix MSVC10 build + + 2010-08-27 02:55 asfernandes + M src/jrd/dyn.epp +Fixed CORE-3109 - [Crash] isc_dql_exec_immed3_m for "create database ..." and NULL transaction + + 2010-08-27 02:18 asfernandes + M builds/posix/make.shared.variables + M src/dsql/DSqlDataTypeUtil.cpp + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + A src/dsql/DsqlCompilerScratch.cpp + A src/dsql/DsqlCompilerScratch.h + M src/dsql/Nodes.h + M src/dsql/StmtNodes.cpp + M src/dsql/StmtNodes.h + M src/dsql/dsql.h + M src/dsql/gen.cpp + M src/dsql/misc_func.cpp + M src/dsql/pass1.cpp + M src/dsql/pass1_proto.h +1) Separate DsqlCompilerScratch in its own files. +2) Move BlockNode functionality to it. +3) Move some related CTE functions to it. + + 2010-08-26 15:40 asfernandes + M src/jrd/Function.epp + M src/jrd/Function.h + M src/jrd/fun.epp +Misc + + 2010-08-25 15:52 asfernandes + M src/jrd/RecordSourceNodes.cpp + M src/jrd/RecordSourceNodes.h + M src/jrd/exe.h + M src/jrd/recsrc/RecordSource.h + M src/jrd/recsrc/WindowedStream.cpp +Rework WindowSourceNode to use type-safe partitions + + 2010-08-25 13:36 mapopa + M doc/README.build.msvc.html +Added links to visual c++ studio 2008 + + 2010-08-25 13:25 mapopa + M doc/README.build.msvc.html +Added unicode/classic innosetup note (we are not using unicode version for the moment , only for 3.0 maybe in the future) + + 2010-08-25 12:00 mapopa + M doc/README.build.msvc.html +added innosetup 5 to the build instructions + + 2010-08-25 10:16 mapopa + M doc/README.build.msvc.html +added sed instructions + + 2010-08-25 08:02 dimitr + M src/jrd/cmp.cpp +Fixed a few suspicious places related to the variable cloning. + + 2010-08-25 03:10 asfernandes + M src/jrd/RecordSourceNodes.cpp + M src/jrd/RecordSourceNodes.h + M src/jrd/exe.h + M src/jrd/opt.cpp + M src/jrd/rse.h +Move dozen of parameters of virtual/overriden function to OptimizerBlk + + 2010-08-25 01:35 asfernandes + M src/jrd/RecordSourceNodes.cpp + M src/jrd/RecordSourceNodes.h + M src/jrd/opt.cpp +Misc + + 2010-08-25 01:01 asfernandes + M src/jrd/RecordSourceNodes.cpp +Remove do-nothing checks from the new file + + 2010-08-25 00:42 asfernandes + M src/jrd/cmp.cpp + M src/jrd/met.epp +Misc + + 2010-08-24 17:49 dimitr + M src/jrd/opt.cpp +Refactored the rivers management a bit. + + 2010-08-24 16:26 asfernandes + M src/jrd/cmp.cpp +Correction + + 2010-08-24 11:58 dimitr + M src/dsql/ExprNodes.cpp +Fixed incomplete processing of UDF arguments, causing server crashes. + + 2010-08-24 08:27 firebirds + M mkChangeLog.sh +Fixed correct buildno in 2.5 + + 2010-08-24 03:25 asfernandes + M builds/posix/make.shared.variables + M builds/win32/msvc10/engine.vcxproj + M builds/win32/msvc10/engine.vcxproj.filters + M builds/win32/msvc10/engine_classic.vcxproj + M builds/win32/msvc10/engine_classic.vcxproj.filters + M builds/win32/msvc10/engine_embed.vcxproj + M builds/win32/msvc10/engine_embed.vcxproj.filters + M builds/win32/msvc9/engine.vcproj + M builds/win32/msvc9/engine_classic.vcproj + M builds/win32/msvc9/engine_embed.vcproj + M src/dsql/ExprNodes.cpp + M src/dsql/Nodes.h + M src/dsql/StmtNodes.cpp + M src/dsql/StmtNodes.h + M src/dsql/Visitors.h + M src/jrd/Attachment.h + M src/jrd/Optimizer.cpp + M src/jrd/Optimizer.h + A src/jrd/RecordSourceNodes.cpp + A src/jrd/RecordSourceNodes.h + M src/jrd/Relation.h + M src/jrd/cmp.cpp + M src/jrd/cmp_proto.h + M src/jrd/exe.cpp + M src/jrd/exe.h + M src/jrd/jrd.h + M src/jrd/lls.h + M src/jrd/met.epp + M src/jrd/nod.h + M src/jrd/opt.cpp + M src/jrd/opt_proto.h + M src/jrd/par.cpp + M src/jrd/par_proto.h + M src/jrd/recsrc/RecordSource.h + M src/jrd/recsrc/Union.cpp + M src/misc/blrtable.cpp +Refactor nod_rse, nod_relation, nod_procedure, nod_union, nod_aggregate and nod_window. + + 2010-08-16 01:47 asfernandes + M src/misc/blrtable.cpp +Fix wrong nod_type of scrollable cursors + + 2010-08-13 15:22 asfernandes + M src/common/classes/NestConst.h + M src/jrd/ExtEngineManager.cpp + M src/jrd/ExtEngineManager.h + M src/jrd/Function.h + M src/jrd/ValuesImpl.h + M src/jrd/cmp.cpp + M src/jrd/cmp_proto.h + M src/jrd/exe.h + M src/jrd/jrd.h + M src/jrd/met.epp + M src/jrd/par.cpp + M src/jrd/recsrc/ProcedureScan.cpp + M src/jrd/recsrc/RecordSource.cpp + M src/jrd/recsrc/RecordSource.h +More consts + + 2010-08-13 09:37 firebirds + M mkChangeLog.sh +per-branch consts + + 2010-08-13 08:41 firebirds + M src/misc/smallog.cpp +Better handling of commits to be skipped + + 2010-08-12 10:32 robocop + M src/jrd/exe.h + M src/jrd/par.cpp +Misc. + + 2010-08-12 00:59 asfernandes + M src/dsql/ExprNodes.cpp + M src/jrd/JrdStatement.cpp + M src/jrd/JrdStatement.h + M src/jrd/exe.cpp + M src/jrd/exe.h +More consts + + 2010-08-11 15:33 asfernandes + M src/common/classes/NestConst.h + M src/dsql/StmtNodes.h +Misc + + 2010-08-11 15:22 firebirds + M src/misc/smallog.cpp +make output in brnches better + + 2010-08-11 02:59 asfernandes + M src/dsql/ExprNodes.cpp + M src/dsql/ExprNodes.h + M src/dsql/StmtNodes.cpp + M src/jrd/exe.h + M src/jrd/met.epp + M src/jrd/nod.h + M src/jrd/par.cpp +Better internal handling of dependencies + + 2010-08-10 15:20 asfernandes + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/StmtNodes.h + M src/dsql/parse.y +Misc + + 2010-08-10 11:08 alexpeshkoff + A mkChangeLog.sh +BuildNum and ChangeLog generator + + 2010-08-10 10:42 alexpeshkoff + M src/misc/writeBuildNum.sh +misc + + 2010-08-10 07:49 alexpeshkoff + M ChangeLog +rolled back test change + + 2010-08-10 00:37 asfernandes + M src/dsql/DdlNodes.epp + M src/jrd/btr.cpp + M src/jrd/exe.h +Misc + + 2010-08-09 16:06 asfernandes + M src/dsql/ExprNodes.cpp + M src/dsql/Nodes.h + M src/dsql/WinNodes.cpp + M src/jrd/Optimizer.cpp +Correct double indirection (jrd_nod**) so const cascades to every dereference + + 2010-08-09 15:48 asfernandes + M builds/win32/msvc10/common.vcxproj + M builds/win32/msvc10/common.vcxproj.filters + M builds/win32/msvc10/common_classic.vcxproj + M builds/win32/msvc10/common_classic.vcxproj.filters + M builds/win32/msvc10/common_static.vcxproj + M builds/win32/msvc10/common_static.vcxproj.filters + M builds/win32/msvc8/common.vcproj + M builds/win32/msvc8/common_classic.vcproj + M builds/win32/msvc8/common_static.vcproj + M builds/win32/msvc9/common.vcproj + M builds/win32/msvc9/common_classic.vcproj + M builds/win32/msvc9/common_static.vcproj + A src/common/classes/NestConst.h + M src/dsql/AggNodes.cpp + M src/dsql/AggNodes.h + M src/dsql/ExprNodes.cpp + M src/dsql/ExprNodes.h + M src/dsql/Nodes.h + M src/dsql/StmtNodes.cpp + M src/dsql/StmtNodes.h + M src/dsql/WinNodes.cpp + M src/dsql/WinNodes.h + M src/jrd/ExtEngineManager.cpp + M src/jrd/ExtEngineManager.h + M src/jrd/Function.epp + M src/jrd/Function.h + M src/jrd/Optimizer.cpp + M src/jrd/Optimizer.h + M src/jrd/SysFunction.cpp + M src/jrd/SysFunction.h + M src/jrd/blb.cpp + M src/jrd/blb_proto.h + M src/jrd/btr.cpp + M src/jrd/btr_proto.h + M src/jrd/cmp.cpp + M src/jrd/evl.cpp + M src/jrd/evl_proto.h + M src/jrd/exe.cpp + M src/jrd/exe.h + M src/jrd/exe_proto.h + M src/jrd/execute_statement.cpp + M src/jrd/execute_statement.h + M src/jrd/extds/ExtDS.cpp + M src/jrd/extds/ExtDS.h + M src/jrd/fun.epp + M src/jrd/fun_proto.h + M src/jrd/met.epp + M src/jrd/opt.cpp + M src/jrd/par.cpp + M src/jrd/recsrc/AggregatedStream.cpp + M src/jrd/recsrc/Cursor.cpp + M src/jrd/recsrc/Cursor.h + M src/jrd/recsrc/FilteredStream.cpp + M src/jrd/recsrc/HashJoin.cpp + M src/jrd/recsrc/MergeJoin.cpp + M src/jrd/recsrc/ProcedureScan.cpp + M src/jrd/recsrc/RecordSource.h + M src/jrd/recsrc/RecursiveStream.cpp + M src/jrd/recsrc/SortedStream.cpp + M src/jrd/recsrc/Union.cpp + M src/jrd/recsrc/WindowedStream.cpp + M src/jrd/req.h + M src/jrd/trace/TraceJrdHelpers.h +Const correction for EVL, EXE and they subsystems. Adjustments to CMP and OPT. + + 2010-08-09 14:50 dimitr + M doc/sql.extensions/README.builtin_functions.txt +CORE-3102 (minor documentation mistake) + + 2010-08-09 13:56 alexpeshkoff + M configure.in + M src/common/classes/DbImplementation.cpp + M src/jrd/common.h +Damian's patch for additional CPUs under linux + + 2010-08-09 11:50 robocop + M src/common/classes/Nullable.h + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/Nodes.h + M src/msgs/facilities2.sql +Misc. + + 2010-08-07 21:18 hvlad + M src/common/classes/ClumpletReader.cpp + M src/jrd/extds/ExtDS.cpp +Fixed bug CORE-3100 : Wait mode and lock timeout of external transaction of EXECUTE STATEMENT not matched to corresponding parameters of local transaction + + 2010-08-07 15:49 asfernandes + M src/jrd/exe.cpp +Hope this assumption to be correct + + 2010-08-07 02:44 asfernandes + M src/jrd/dyn.epp + M src/jrd/dyn_def.epp + M src/jrd/dyn_df_proto.h +Misc + + 2010-08-07 02:43 asfernandes + M src/dsql/pass1.cpp +Correction for CORE-3090 + + 2010-08-07 02:38 asfernandes + M src/jrd/extds/IscDS.cpp +Misc + + 2010-08-07 02:10 asfernandes + M src/dsql/pass1.cpp + M src/jrd/Optimizer.cpp +Frontport fix for CORE-3090 - Incorrect LEFT JOIN result using table and derived constant subquery + + 2010-08-06 15:16 alexpeshkoff + M builds/posix/Makefile.in.fbserver +Mistyped - thanks to Adriano + + 2010-08-06 15:16 hvlad + M src/jrd/extds/IscDS.cpp +Fixed bug CORE-3089 : Attempt of execute statement on external datasource failed when datasource is interbase 4.1 + + 2010-08-05 15:55 asfernandes + M src/dsql/dsql.cpp + M src/jrd/DatabaseSnapshot.cpp + M src/jrd/JrdStatement.cpp + M src/jrd/JrdStatement.h + M src/jrd/SysFunction.cpp + M src/jrd/evl.cpp + M src/jrd/exe.cpp + M src/jrd/exe.h + M src/jrd/jrd.cpp + M src/jrd/opt.cpp + M src/jrd/req.h +1) Better organization between request and statement. 2) Consts. + + 2010-08-05 00:47 asfernandes + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/Nodes.h + M src/dsql/PackageNodes.epp + M src/dsql/PackageNodes.h + M src/dsql/parse.y +Simplification + + 2010-08-05 00:44 asfernandes + M src/jrd/SysFunction.cpp + M src/jrd/exe.cpp +Fix DDL triggers + + 2010-08-04 15:50 asfernandes + M src/jrd/cmp.cpp +Frontport fix for CORE-3094 - Parameters doesn't work with NOT IN from a selectable procedure + + 2010-08-04 02:22 asfernandes + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/PackageNodes.h +Misc: "explicit" with more than one parameter is unnecessary + + 2010-08-04 01:48 asfernandes + M src/dsql/PackageNodes.epp +Correction for ALTER PACKAGE source code storage + + 2010-08-04 01:41 asfernandes + M src/dsql/PackageNodes.epp + M src/dsql/PackageNodes.h +Use RecreateNode in package commands + + 2010-08-03 01:09 asfernandes + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h +Corrections + + 2010-08-02 23:13 asfernandes + M src/dsql/DdlNodes.h +Fix GCC build + + 2010-08-02 15:58 asfernandes + M src/dsql/BlrWriter.h + M src/dsql/DdlNodes.epp +Suggestions of Claudio + + 2010-08-02 15:47 asfernandes + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/parse.y +Create template for RECREATE commands + + 2010-08-02 02:22 asfernandes + M lang_helpers/gds_codes.ftn + M lang_helpers/gds_codes.pas + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/ddl.cpp + M src/dsql/dsql.h + M src/dsql/metd.epp + M src/dsql/metd_proto.h + M src/dsql/node.h + M src/dsql/parse.y + 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/jrd/drq.h + M src/jrd/dyn.epp + M src/jrd/dyn_def.epp + M src/jrd/dyn_del.epp + M src/jrd/dyn_df_proto.h + M src/jrd/dyn_dl_proto.h + M src/jrd/dyn_md_proto.h + M src/jrd/dyn_mod.epp + M src/jrd/dyn_ut_proto.h + M src/jrd/dyn_util.epp + M src/msgs/facilities2.sql + M src/msgs/messages2.sql + M src/msgs/system_errors2.sql +Refactor CREATE/ALTER/CREATE OR ALTER/RECREATE VIEW and cleanup related to previously refactors + + 2010-07-31 18:40 asfernandes + M src/jrd/SysFunction.cpp +Fixed CORE-3091 - Built-in function POWER(X, Y) does not work when the X argument is negative and the Y value is scaled numeric but integral + + 2010-07-30 14:13 asfernandes + M src/dsql/DdlNodes.epp +Fix problem noticed by Claudio + + 2010-07-29 00:36 asfernandes + M src/include/gen/msgs.h + M src/jrd/dfw.epp + M src/jrd/tra.h + M src/jrd/vio.cpp + M src/msgs/messages2.sql +Better error reporting and adjustments + + 2010-07-29 00:20 asfernandes + A src/common/classes/Nullable.h + M src/common/classes/TriState.h + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/PackageNodes.epp + M src/dsql/Parser.h + M src/dsql/btyacc_fb.ske + M src/dsql/keywords.cpp + M src/dsql/parse.y + M src/jrd/PreparedStatement.h +Rename misleading TriStateType class name to Nullable + + 2010-07-28 16:14 asfernandes + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/Parser.h + M src/dsql/parse.y + M src/jrd/dfw.epp + M src/jrd/tra.h + M src/jrd/vio.cpp +Improvement CORE-3085 - Add clause ALTER DOMAIN <name> [NOT] NULL + + 2010-07-27 09:27 dimitr + M builds/win32/msvc9/fb_inet_server.vcproj + M builds/win32/msvc9/fbserver.vcproj + M builds/win32/msvc9/gsec.vcproj +Fixed MSVC9 build. + + 2010-07-26 23:05 asfernandes + M builds/win32/msvc10/fb_inet_server.vcxproj + M builds/win32/msvc10/fb_inet_server.vcxproj.filters + M builds/win32/msvc10/fbserver.vcxproj + M builds/win32/msvc10/fbserver.vcxproj.filters + M builds/win32/msvc10/gsec.vcxproj + M builds/win32/msvc10/gsec.vcxproj.filters +Fix MSVC10 build + + 2010-07-26 10:51 hvlad + M src/jrd/dfw.epp +Fixed bug CORE-3079 : Strong slowing down inserts with EVENT-s in a single transaction + + 2010-07-26 02:37 asfernandes + M lang_helpers/gds_codes.ftn + M lang_helpers/gds_codes.pas + M src/common/classes/ByteChunk.h + M src/common/classes/objects_array.h + M src/dsql/BlrWriter.h + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/Nodes.h + M src/dsql/PackageNodes.epp + M src/dsql/PackageNodes.h + M src/dsql/ddl.cpp + M src/dsql/ddl_proto.h + M src/dsql/dsql.h + M src/dsql/node.h + M src/dsql/parse.y + M src/dsql/pass1.cpp + M src/gpre/gpre.h + 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/constants.h + M src/jrd/drq.h + M src/jrd/dyn.epp + M src/jrd/dyn_def.epp + M src/jrd/dyn_del.epp + M src/jrd/dyn_df_proto.h + M src/jrd/dyn_dl_proto.h + M src/jrd/dyn_md_proto.h + M src/jrd/dyn_mod.epp + M src/jrd/dyn_ut_proto.h + M src/jrd/dyn_util.epp + M src/msgs/facilities2.sql + M src/msgs/messages2.sql + M src/msgs/system_errors2.sql +Refactor CREATE/ALTER/DROP/RECREATE TABLE and DROP VIEW commands + + 2010-07-26 02:14 asfernandes + M src/burp/backup.epp + M src/jrd/ini.epp +Create system constraints for better error reporting. Change to GBAK must be backported to avoid future problems. + + 2010-07-24 11:22 hvlad + M src/common/classes/Interface.h +Correction. + + 2010-07-24 08:33 hvlad + M builds/win32/msvc8/utilities.vcproj +Correction. Thanks to Adriano. + + 2010-07-24 02:43 asfernandes + M src/auth/AuthDbg.cpp + M src/auth/AuthInterface.h + M src/auth/SecurityDatabase/LegacyManagement.epp + M src/auth/SecurityDatabase/LegacyManagement.h + M src/auth/trusted/AuthSspi.cpp + M src/common/classes/ImplementHelper.h + M src/common/classes/Interface.h + M src/dbs/security.sql + M src/jrd/gds.cpp + M src/jrd/os/posix/mod_loader.cpp + M src/remote/server.cpp + M src/utilities/gsec/security.cpp +Misc + + 2010-07-23 14:39 hvlad + M src/auth/SecurityDatabase/LegacyManagement.epp + M src/remote/interface.cpp +Forgotten changes + + 2010-07-23 14:31 hvlad + M src/remote/interface.cpp + M src/remote/os/win32/srvr_w32.cpp +Make trusted auth works + + 2010-07-23 14:06 hvlad + M builds/win32/defs/fbclient.def + M builds/win32/make_boot.bat + M builds/win32/msvc8/gsec.vcproj + M builds/win32/msvc8/utilities.vcproj + M builds/win32/preprocess.bat + M src/auth/SecurityDatabase/LegacyClient.cpp + M src/auth/trusted/AuthSspi.cpp + M src/auth/trusted/AuthSspi.h + M src/jrd/pwd.cpp + M src/remote/os/win32/srvr_w32.cpp +Make Windows build work (MSVC8 only) after Alex changes. +Some corrections is still required. + + 2010-07-23 14:01 alexpeshkoff + M src/jrd/svc.cpp +gsec always worked only with SYSDBA - thx to Vlad + + 2010-07-23 12:04 alexpeshkoff + M builds/posix/Makefile.in.client.gsec + M builds/posix/Makefile.in.embed.util + M builds/posix/Makefile.in.fbserver + M builds/posix/Makefile.in.firebird + M builds/posix/Makefile.in.smp_server + A builds/posix/Makefile.in.user.management + M builds/posix/firebird.vers + M builds/posix/make.defaults + M builds/posix/make.rules + M builds/posix/make.shared.variables + M configure.in + M src/auth/Auth.cpp + M src/auth/Auth.h + A src/auth/AuthDbg.cpp + A src/auth/AuthDbg.h + M src/auth/AuthInterface.h + M src/auth/SecurityDatabase/LegacyClient.cpp + M src/auth/SecurityDatabase/LegacyClient.h + A src/auth/SecurityDatabase/LegacyManagement.epp (from /firebird/trunk/src/utilities/gsec/security.epp:51339) + A src/auth/SecurityDatabase/LegacyManagement.h + A src/common/classes/ImplementHelper.h + M src/common/classes/Interface.h + M src/dbs/security.sql + M src/include/FirebirdPluginApi.h + M src/include/gen/ids.h + M src/jrd/PluginManager.h + M src/jrd/fields.h + M src/jrd/gds.cpp + M src/jrd/idx.h + M src/jrd/ini.epp + M src/jrd/jrd_pwd.h + M src/jrd/names.h + M src/jrd/os/posix/mod_loader.cpp + M src/jrd/pwd.cpp + M src/jrd/relations.h + A src/misc/smallog.cpp + M src/plugins/udr_engine/UdrEngine.cpp + M src/remote/interface.cpp + M src/remote/server.cpp + A src/utilities/gsec/security.cpp (from /firebird/trunk/src/utilities/gsec/security.epp:51354) + D src/utilities/gsec/security.epp +Implemented self-registering plugins format (same plugin can be easily linked statically +or as dynamic library, depending upon platform requirements). Self-registering plugins +need not export any functions, instead they call fb_register_plugin() on startup. +Reworked all user management to use self-registering plugins. +Removed system table RDB$USERS. PLG$USERS is not created automatically by plugin, but +will be later (work in progress). + + 2010-07-22 09:36 alexpeshkoff + M src/utilities/ntrace/TracePluginImpl.h + M src/utilities/ntrace/TraceUnicodeUtils.h +Fixed gcc warning - No newline at end of file + + 2010-07-15 00:47 asfernandes + M builds/posix/Makefile.in.firebird + M src/jrd/UserManagement.cpp + M src/jrd/svc.cpp + M src/utilities/gsec/gsec.cpp + M src/utilities/gsec/secur_proto.h + M src/utilities/gsec/security.epp +Misc + + 2010-07-13 12:33 dimitr + D src/jrd/recsrc/UsersTableScan.cpp +Reworked the SEC$USERS implementation so that no new physical table type and data access method would be required. More changes are likely to follow soon. + + 2010-07-13 12:32 dimitr + M builds/posix/make.shared.variables +Reworked the SEC$USERS implementation so that no new physical table type and data access method would be required. More changes are likely to follow soon. + + 2010-07-13 12:31 dimitr + M builds/win32/msvc10/engine.vcxproj + M builds/win32/msvc10/engine.vcxproj.filters + M builds/win32/msvc10/engine_classic.vcxproj + M builds/win32/msvc10/engine_classic.vcxproj.filters + M builds/win32/msvc10/engine_embed.vcxproj + M builds/win32/msvc10/engine_embed.vcxproj.filters + M builds/win32/msvc9/engine.vcproj + M builds/win32/msvc9/engine_classic.vcproj + M builds/win32/msvc9/engine_embed.vcproj + M src/jrd/Database.h + M src/jrd/DatabaseSnapshot.cpp + M src/jrd/DatabaseSnapshot.h + M src/jrd/Relation.h + M src/jrd/UserManagement.cpp + M src/jrd/UserManagement.h + M src/jrd/constants.h + M src/jrd/met.epp + M src/jrd/opt.cpp + M src/jrd/recsrc/RecordSource.h + M src/jrd/recsrc/VirtualTableScan.cpp + M src/jrd/relations.h + M src/jrd/types.h +Reworked the SEC$USERS implementation so that no new physical table type and data access method would be required. More changes are likely to follow soon. + + 2010-07-13 11:03 dimitr + M src/dsql/BlrWriter.h +Get rid of the annoying warnings. + + 2010-07-13 10:31 dimitr + M src/utilities/gsec/gsec.h +Misc. + + 2010-07-13 07:05 dimitr + M src/jrd/isc_sync.cpp +Mirror the recent Alex's change for Windows. It doesn't seem being strictly required, but let's be safe. + + 2010-07-12 15:51 asfernandes + M builds/win32/msvc10/engine.vcxproj + M builds/win32/msvc10/engine.vcxproj.filters + M builds/win32/msvc10/engine_classic.vcxproj + M builds/win32/msvc10/engine_classic.vcxproj.filters + M builds/win32/msvc10/engine_embed.vcxproj + M builds/win32/msvc10/engine_embed.vcxproj.filters +Fix MSVC10 build + + 2010-07-12 08:09 hvlad + M src/jrd/extds/ExtDS.cpp +Fixed unregistered bug in EXECUTE STATEMENT : make internal cache of prepared statements work properly. + + 2010-07-11 18:21 asfernandes + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/Nodes.h + M src/dsql/ddl.cpp + M src/dsql/metd.epp + M src/dsql/metd_proto.h + M src/dsql/node.h + M src/dsql/parse.y + M src/dsql/pass1.cpp + M src/jrd/dyn.epp + M src/jrd/dyn_def.epp + M src/jrd/dyn_del.epp + M src/jrd/dyn_df_proto.h + M src/jrd/dyn_dl_proto.h + M src/jrd/dyn_md_proto.h + M src/jrd/dyn_mod.epp +Refactor CREATE/ALTER/CREATE OR ALTER/RECREATE/DROP EXCEPTION commands + + 2010-07-10 08:35 robocop + M builds/win32/msvc9/engine.vcproj + M builds/win32/msvc9/engine_classic.vcproj + M builds/win32/msvc9/engine_embed.vcproj +Fix project files. + + 2010-07-10 08:33 robocop + M src/jrd/DatabaseSnapshot.h + M src/jrd/svc.cpp + M src/msgs/facilities2.sql +Misc. + + 2010-07-10 08:32 robocop + M src/jrd/UserManagement.cpp +Fix compilation error. + + 2010-07-09 12:51 alexpeshkoff + M builds/posix/Makefile.in.firebird + M builds/posix/make.shared.variables + M src/dbs/security.sql + M src/include/gen/ids.h + M src/jrd/DatabaseSnapshot.cpp + M src/jrd/DatabaseSnapshot.h + M src/jrd/Relation.h + M src/jrd/UserManagement.cpp + M src/jrd/UserManagement.h + M src/jrd/constants.h + M src/jrd/fields.h + M src/jrd/idx.h + M src/jrd/ini.epp + M src/jrd/met.epp + M src/jrd/names.h + M src/jrd/opt.cpp + M src/jrd/recsrc/RecordSource.h + A src/jrd/recsrc/UsersTableScan.cpp + M src/jrd/relations.h + M src/jrd/svc.cpp + M src/jrd/types.h + M src/msgs/facilities2.sql + M src/msgs/messages2.sql + M src/utilities/gsec/gsec.cpp + M src/utilities/gsec/gsec.h + M src/utilities/gsec/gsecswi.h + M src/utilities/gsec/secur_proto.h + M src/utilities/gsec/security.epp +ODS change: made RDB$USERS system table, added virtual table SEC$USERS + + 2010-07-09 11:04 alexpeshkoff + M src/jrd/isc_sync.cpp +Fixed CORE-3067: Objects not unmapped when shared memory is closed + + 2010-07-08 10:44 dimitr + M src/common/classes/fb_pair.h +Fixed the old bug which was left unnoticed until RC3 where Pair<MetaName, MetaName> was used as a key for a b-tree. +At the first glance, it promises only wrong ordering of items, but in fact it trashes the b-tree internals and crashes the server :-( +It's unregistered and undocumented, but being a very recent RC3 only regression, let's leave it this way. +I suppose the intended code should be !(v.first < this->first), but we have the operator == defined, so I used a simpler form. + + 2010-07-06 11:09 asfernandes + M src/jrd/recsrc/AggregatedStream.cpp + M src/jrd/recsrc/BufferedStream.cpp + M src/jrd/recsrc/NestedLoopJoin.cpp + M src/jrd/recsrc/ProcedureScan.cpp + M src/jrd/recsrc/RecordSource.h + M src/jrd/recsrc/SortedStream.cpp + M src/jrd/recsrc/WindowedStream.cpp +More const correctness + + 2010-07-06 09:10 robocop + M src/dsql/DdlNodes.epp +Misc. + + 2010-07-06 00:49 asfernandes + M builds/win32/msvc10/common.vcxproj + M builds/win32/msvc10/common_classic.vcxproj + M builds/win32/msvc10/common_static.vcxproj + M builds/win32/msvc8/common.vcproj + M builds/win32/msvc8/common_classic.vcproj + M builds/win32/msvc8/common_static.vcproj + M builds/win32/msvc9/common.vcproj + M builds/win32/msvc9/common_classic.vcproj + M builds/win32/msvc9/common_static.vcproj + A src/common/classes/ByteChunk.h + M src/dsql/BlrWriter.h + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/Nodes.h + M src/dsql/Parser.h + M src/dsql/ddl.cpp + M src/dsql/dsql.h + M src/dsql/node.h + M src/dsql/parse.y + M src/dsql/pass1.cpp + M src/jrd/Attachment.cpp + M src/jrd/Attachment.h + M src/jrd/drq.h + M src/jrd/dyn.epp + M src/jrd/dyn_def.epp + M src/jrd/dyn_del.epp + M src/jrd/dyn_df_proto.h + M src/jrd/dyn_dl_proto.h + M src/jrd/dyn_md_proto.h + M src/jrd/dyn_mod.epp + M src/jrd/ini.epp +Refactor CREATE/ALTER/DROP DOMAIN + + 2010-07-05 18:37 asfernandes + M src/jrd/recsrc/AggregatedStream.cpp + M src/jrd/recsrc/BitmapTableScan.cpp + M src/jrd/recsrc/BufferedStream.cpp + M src/jrd/recsrc/Cursor.cpp + M src/jrd/recsrc/Cursor.h + M src/jrd/recsrc/ExternalTableScan.cpp + M src/jrd/recsrc/FilteredStream.cpp + M src/jrd/recsrc/FirstRowsStream.cpp + M src/jrd/recsrc/FullOuterJoin.cpp + M src/jrd/recsrc/FullTableScan.cpp + M src/jrd/recsrc/HashJoin.cpp + M src/jrd/recsrc/IndexTableScan.cpp + M src/jrd/recsrc/LockedStream.cpp + M src/jrd/recsrc/MergeJoin.cpp + M src/jrd/recsrc/NestedLoopJoin.cpp + M src/jrd/recsrc/ProcedureScan.cpp + M src/jrd/recsrc/RecordSource.cpp + M src/jrd/recsrc/RecordSource.h + M src/jrd/recsrc/RecursiveStream.cpp + M src/jrd/recsrc/SingularStream.cpp + M src/jrd/recsrc/SkipRowsStream.cpp + M src/jrd/recsrc/SortedStream.cpp + M src/jrd/recsrc/Union.cpp + M src/jrd/recsrc/VirtualTableScan.cpp + M src/jrd/recsrc/WindowedStream.cpp +Constify RecordSource methods - these classes are shared pieces of a (shared) statement + + 2010-07-02 10:43 dimitr + M src/dsql/pass1.cpp +Fixed CORE-3064: Using the procedure alias inside an explicit plan crashes the server. + + 2010-06-30 21:29 hvlad + M builds/win32/msvc10/build_msg.vcxproj + M builds/win32/msvc10/codes.vcxproj +VC10 build: leave build_msg.exe and codes.exe at intermediate build folder else make_boot failed + + 2010-06-30 21:27 hvlad + M builds/win32/msvc10/firebird2.props +VC10 build: don't put .bsc files into target build folder + + 2010-06-30 08:55 robocop + M src/dsql/StmtNodes.cpp + M src/dsql/gen.cpp + M src/jrd/event.h + M src/jrd/isc_file.cpp + M src/jrd/isc_sync.cpp + M src/lock/lock_proto.h + M src/lock/print.cpp + M src/msgs/facilities2.sql +Misc. + + 2010-06-30 08:54 robocop + M src/jrd/gds.cpp +Correction. + + 2010-06-29 16:22 asfernandes + M builds/win32/msvc10/btyacc.vcxproj + M builds/win32/msvc10/build_msg.vcxproj + M builds/win32/msvc10/codes.vcxproj + M builds/win32/msvc10/fb2control.vcxproj + M builds/win32/msvc10/fb_inet_server.vcxproj + M builds/win32/msvc10/fb_lock_print.vcxproj + M builds/win32/msvc10/fbclient.vcxproj + M builds/win32/msvc10/fbembed.vcxproj + M builds/win32/msvc10/fbguard.vcxproj + M builds/win32/msvc10/fbrmclib.vcxproj + M builds/win32/msvc10/fbserver.vcxproj + M builds/win32/msvc10/fbsvcmgr.vcxproj + M builds/win32/msvc10/fbtrace.vcxproj + M builds/win32/msvc10/fbtracemgr.vcxproj + M builds/win32/msvc10/fbudf.vcxproj + M builds/win32/msvc10/gbak.vcxproj + M builds/win32/msvc10/gbak_embed.vcxproj + M builds/win32/msvc10/gfix.vcxproj + M builds/win32/msvc10/gpre.vcxproj + M builds/win32/msvc10/gpre_boot.vcxproj + M builds/win32/msvc10/gpre_embed.vcxproj + M builds/win32/msvc10/gsec.vcxproj + M builds/win32/msvc10/gsplit.vcxproj + M builds/win32/msvc10/gstat.vcxproj + M builds/win32/msvc10/ib_udf.vcxproj + M builds/win32/msvc10/ib_util.vcxproj + M builds/win32/msvc10/instclient.vcxproj + M builds/win32/msvc10/instreg.vcxproj + M builds/win32/msvc10/instsvc.vcxproj + M builds/win32/msvc10/intl.vcxproj + M builds/win32/msvc10/isql.vcxproj + M builds/win32/msvc10/isql_embed.vcxproj + M builds/win32/msvc10/nbackup.vcxproj + M builds/win32/msvc10/qli.vcxproj + M builds/win32/msvc10/udr_engine.vcxproj +Fix run from MSVC10 IDE + + 2010-06-29 16:19 asfernandes + M src/jrd/dyn_def.epp +Misc + + 2010-06-28 16:49 asfernandes + M builds/win32/msvc10/Firebird2Boot.sln +Fixed MSVC10 boot build + + 2010-06-28 09:46 alexpeshkoff + M src/jrd/event_proto.h +cleanup + + 2010-06-28 09:38 alexpeshkoff + M src/jrd/event.cpp +Fixed some bugs, related with remapping fo events shared memory - thanks to Adriano + + 2010-06-27 03:47 asfernandes + A builds/win32/msvc10 + A builds/win32/msvc10/DllNoEmbedManifest.props + A builds/win32/msvc10/Firebird2.sln + A builds/win32/msvc10/Firebird2Boot.sln + A builds/win32/msvc10/Firebird2_Examples.sln + A builds/win32/msvc10/alice.vcxproj + A builds/win32/msvc10/alice.vcxproj.filters + A builds/win32/msvc10/btyacc.vcxproj + A builds/win32/msvc10/btyacc.vcxproj.filters + A builds/win32/msvc10/build_msg.vcxproj + A builds/win32/msvc10/build_msg.vcxproj.filters + A builds/win32/msvc10/burp.vcxproj + A builds/win32/msvc10/burp.vcxproj.filters + A builds/win32/msvc10/codes.vcxproj + A builds/win32/msvc10/codes.vcxproj.filters + A builds/win32/msvc10/common.vcxproj + A builds/win32/msvc10/common.vcxproj.filters + A builds/win32/msvc10/common_classic.vcxproj + A builds/win32/msvc10/common_classic.vcxproj.filters + A builds/win32/msvc10/common_static.vcxproj + A builds/win32/msvc10/common_static.vcxproj.filters + A builds/win32/msvc10/config.vcxproj + A builds/win32/msvc10/config.vcxproj.filters + A builds/win32/msvc10/dsql_server.vcxproj + A builds/win32/msvc10/dsql_server.vcxproj.filters + A builds/win32/msvc10/dsql_server_classic.vcxproj + A builds/win32/msvc10/dsql_server_classic.vcxproj.filters + A builds/win32/msvc10/empbuild.vcxproj + A builds/win32/msvc10/empbuild.vcxproj.filters + A builds/win32/msvc10/engine.vcxproj + A builds/win32/msvc10/engine.vcxproj.filters + A builds/win32/msvc10/engine_classic.vcxproj + A builds/win32/msvc10/engine_classic.vcxproj.filters + A builds/win32/msvc10/engine_embed.vcxproj + A builds/win32/msvc10/engine_embed.vcxproj.filters + A builds/win32/msvc10/fb2control.vcxproj + A builds/win32/msvc10/fb2control.vcxproj.filters + A builds/win32/msvc10/fb_inet_server.vcxproj + A builds/win32/msvc10/fb_inet_server.vcxproj.filters + A builds/win32/msvc10/fb_lock_print.vcxproj + A builds/win32/msvc10/fb_lock_print.vcxproj.filters + A builds/win32/msvc10/fbclient.vcxproj + A builds/win32/msvc10/fbclient.vcxproj.filters + A builds/win32/msvc10/fbembed.vcxproj + A builds/win32/msvc10/fbembed.vcxproj.filters + A builds/win32/msvc10/fbguard.vcxproj + A builds/win32/msvc10/fbguard.vcxproj.filters + A builds/win32/msvc10/fbrmclib.vcxproj + A builds/win32/msvc10/fbrmclib.vcxproj.filters + A builds/win32/msvc10/fbserver.vcxproj + A builds/win32/msvc10/fbserver.vcxproj.filters + A builds/win32/msvc10/fbsvcmgr.vcxproj + A builds/win32/msvc10/fbsvcmgr.vcxproj.filters + A builds/win32/msvc10/fbtrace.vcxproj + A builds/win32/msvc10/fbtrace.vcxproj.filters + A builds/win32/msvc10/fbtracemgr.vcxproj + A builds/win32/msvc10/fbtracemgr.vcxproj.filters + A builds/win32/msvc10/fbudf.vcxproj + A builds/win32/msvc10/fbudf.vcxproj.filters + A builds/win32/msvc10/firebird2.props + A builds/win32/msvc10/firebird2debug.props + A builds/win32/msvc10/firebird2release.props + A builds/win32/msvc10/gbak.vcxproj + A builds/win32/msvc10/gbak.vcxproj.filters + A builds/win32/msvc10/gbak_embed.vcxproj + A builds/win32/msvc10/gbak_embed.vcxproj.filters + A builds/win32/msvc10/gfix.vcxproj + A builds/win32/msvc10/gfix.vcxproj.filters + A builds/win32/msvc10/gpre.vcxproj + A builds/win32/msvc10/gpre.vcxproj.filters + A builds/win32/msvc10/gpre_boot.vcxproj + A builds/win32/msvc10/gpre_boot.vcxproj.filters + A builds/win32/msvc10/gpre_embed.vcxproj + A builds/win32/msvc10/gpre_embed.vcxproj.filters + A builds/win32/msvc10/gsec.vcxproj + A builds/win32/msvc10/gsec.vcxproj.filters + A builds/win32/msvc10/gsplit.vcxproj + A builds/win32/msvc10/gsplit.vcxproj.filters + A builds/win32/msvc10/gstat.vcxproj + A builds/win32/msvc10/gstat.vcxproj.filters + A builds/win32/msvc10/ib_udf.vcxproj + A builds/win32/msvc10/ib_udf.vcxproj.filters + A builds/win32/msvc10/ib_util.vcxproj + A builds/win32/msvc10/ib_util.vcxproj.filters + A builds/win32/msvc10/instclient.vcxproj + A builds/win32/msvc10/instclient.vcxproj.filters + A builds/win32/msvc10/instreg.vcxproj + A builds/win32/msvc10/instreg.vcxproj.filters + A builds/win32/msvc10/instsvc.vcxproj + A builds/win32/msvc10/instsvc.vcxproj.filters + A builds/win32/msvc10/intl.vcxproj + A builds/win32/msvc10/intl.vcxproj.filters + A builds/win32/msvc10/intlbuild.vcxproj + A builds/win32/msvc10/intlbuild.vcxproj.filters + A builds/win32/msvc10/isql.vcxproj + A builds/win32/msvc10/isql.vcxproj.filters + A builds/win32/msvc10/isql_embed.vcxproj + A builds/win32/msvc10/isql_embed.vcxproj.filters + A builds/win32/msvc10/lock.vcxproj + A builds/win32/msvc10/lock.vcxproj.filters + A builds/win32/msvc10/lock_classic.vcxproj + A builds/win32/msvc10/lock_classic.vcxproj.filters + A builds/win32/msvc10/nbackup.vcxproj + A builds/win32/msvc10/nbackup.vcxproj.filters + A builds/win32/msvc10/qli.vcxproj + A builds/win32/msvc10/qli.vcxproj.filters + A builds/win32/msvc10/remote.vcxproj + A builds/win32/msvc10/remote.vcxproj.filters + A builds/win32/msvc10/udr_engine.vcxproj + A builds/win32/msvc10/udr_engine.vcxproj.filters + A builds/win32/msvc10/udrcpp_example.vcxproj + A builds/win32/msvc10/udrcpp_example.vcxproj.filters + M builds/win32/setenvvar.bat + A extern/icu/source/allinone/allinone_10.sln + A extern/icu/source/allinone/firebird2debug.props + A extern/icu/source/allinone/firebird2intl.props + A extern/icu/source/allinone/firebird2release.props + A extern/icu/source/common/common_10.vcxproj + A extern/icu/source/common/common_10.vcxproj.filters + A extern/icu/source/data/makedata_10.vcxproj + A extern/icu/source/data/makedata_10.vcxproj.filters + A extern/icu/source/extra/uconv/uconv_10.vcxproj + A extern/icu/source/extra/uconv/uconv_10.vcxproj.filters + A extern/icu/source/i18n/i18n_10.vcxproj + A extern/icu/source/i18n/i18n_10.vcxproj.filters + A extern/icu/source/io/io_10.vcxproj + A extern/icu/source/io/io_10.vcxproj.filters + A extern/icu/source/layout/layout_10.vcxproj + A extern/icu/source/layout/layout_10.vcxproj.filters + A extern/icu/source/layoutex/layoutex_10.vcxproj + A extern/icu/source/layoutex/layoutex_10.vcxproj.filters + A extern/icu/source/stubdata/stubdata_10.vcxproj + A extern/icu/source/stubdata/stubdata_10.vcxproj.filters + A extern/icu/source/test/cintltst/cintltst_10.vcxproj + A extern/icu/source/test/cintltst/cintltst_10.vcxproj.filters + A extern/icu/source/test/intltest/intltest_10.vcxproj + A extern/icu/source/test/intltest/intltest_10.vcxproj.filters + A extern/icu/source/test/iotest/iotest_10.vcxproj + A extern/icu/source/test/iotest/iotest_10.vcxproj.filters + A extern/icu/source/tools/ctestfw/ctestfw_10.vcxproj + A extern/icu/source/tools/ctestfw/ctestfw_10.vcxproj.filters + A extern/icu/source/tools/genbrk/genbrk_10.vcxproj + A extern/icu/source/tools/genbrk/genbrk_10.vcxproj.filters + A extern/icu/source/tools/genccode/genccode_10.vcxproj + A extern/icu/source/tools/genccode/genccode_10.vcxproj.filters + A extern/icu/source/tools/gencmn/decmn_10.vcxproj + A extern/icu/source/tools/gencmn/decmn_10.vcxproj.filters + A extern/icu/source/tools/gencmn/gencmn_10.vcxproj + A extern/icu/source/tools/gencmn/gencmn_10.vcxproj.filters + A extern/icu/source/tools/gencnval/gencnval_10.vcxproj + A extern/icu/source/tools/gencnval/gencnval_10.vcxproj.filters + A extern/icu/source/tools/gennames/gennames_10.vcxproj + A extern/icu/source/tools/gennames/gennames_10.vcxproj.filters + A extern/icu/source/tools/gennorm/gennorm_10.vcxproj + A extern/icu/source/tools/gennorm/gennorm_10.vcxproj.filters + A extern/icu/source/tools/genpname/genpname_10.vcxproj + A extern/icu/source/tools/genpname/genpname_10.vcxproj.filters + A extern/icu/source/tools/genprops/genprops_10.vcxproj + A extern/icu/source/tools/genprops/genprops_10.vcxproj.filters + A extern/icu/source/tools/genrb/derb_10.vcxproj + A extern/icu/source/tools/genrb/derb_10.vcxproj.filters + A extern/icu/source/tools/genrb/genrb_10.vcxproj + A extern/icu/source/tools/genrb/genrb_10.vcxproj.filters + A extern/icu/source/tools/gensprep/gensprep_10.vcxproj + A extern/icu/source/tools/gensprep/gensprep_10.vcxproj.filters + A extern/icu/source/tools/gentest/gentest_10.vcxproj + A extern/icu/source/tools/gentest/gentest_10.vcxproj.filters + A extern/icu/source/tools/genuca/genuca_10.vcxproj + A extern/icu/source/tools/genuca/genuca_10.vcxproj.filters + A extern/icu/source/tools/icuswap/icuswap_10.vcxproj + A extern/icu/source/tools/icuswap/icuswap_10.vcxproj.filters + A extern/icu/source/tools/makeconv/makeconv_10.vcxproj + A extern/icu/source/tools/makeconv/makeconv_10.vcxproj.filters + A extern/icu/source/tools/pkgdata/pkgdata_10.vcxproj + A extern/icu/source/tools/pkgdata/pkgdata_10.vcxproj.filters + A extern/icu/source/tools/toolutil/toolutil_10.vcxproj + A extern/icu/source/tools/toolutil/toolutil_10.vcxproj.filters + M src/jrd/gds.cpp + M src/jrd/os/win32/mod_loader.cpp +MSVC10 support + + 2010-06-26 02:50 asfernandes + M src/dsql/DdlNodes.epp + M src/dsql/ddl.cpp + M src/dsql/metd.epp + M src/dsql/metd_proto.h + M src/jrd/irq.h +Cleanup + + 2010-06-26 02:30 asfernandes + M src/dsql/DdlNodes.epp + M src/dsql/ddl.cpp + M src/dsql/metd.epp + M src/dsql/metd_proto.h +Misc + + 2010-06-26 01:52 asfernandes + M lang_helpers/gds_codes.ftn + M lang_helpers/gds_codes.pas + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/ddl.cpp + M src/dsql/node.h + M src/dsql/parse.y + 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/jrd/Attachment.cpp + M src/jrd/Attachment.h + M src/jrd/drq.h + M src/jrd/dyn.epp + M src/jrd/dyn.h + M src/jrd/dyn_def.epp + M src/jrd/dyn_del.epp + M src/jrd/dyn_df_proto.h + M src/jrd/dyn_dl_proto.h + M src/msgs/messages2.sql + M src/msgs/system_errors2.sql +Refactor CREATE/DROP COLLATION + + 2010-06-26 01:18 asfernandes + M src/jrd/event_proto.h + M src/jrd/isc_s_proto.h + M src/jrd/isc_sync.cpp + M src/jrd/trace/TraceConfigStorage.h + M src/lock/lock.cpp + M src/lock/lock_proto.h + M src/lock/print.cpp +Misc + + 2010-06-25 12:16 hvlad + M src/jrd/isc_sync.cpp +Cleanup + + 2010-06-25 11:55 alexpeshkoff + M src/jrd/DatabaseSnapshot.cpp + M src/jrd/DatabaseSnapshot.h + M src/jrd/cch.h + M src/jrd/dbt.cpp + M src/jrd/event.cpp + M src/jrd/event.h + M src/jrd/event_proto.h + D src/jrd/isc.h + M src/jrd/isc_s_proto.h + M src/jrd/isc_sync.cpp + M src/jrd/os/win32/isc_ipc.cpp + M src/jrd/trace/TraceConfigStorage.cpp + M src/jrd/trace/TraceConfigStorage.h + M src/jrd/trace/TraceLog.cpp + M src/jrd/trace/TraceLog.h + M src/jrd/trace/TraceObjects.h + M src/lock/driver.cpp + M src/lock/lock.cpp + M src/lock/lock_proto.h + M src/lock/print.cpp + M src/remote/os/win32/property.cpp + M src/remote/os/win32/window.cpp + M src/utilities/drop.cpp +Introduced class SharedMemory - base class for everything, using IPC. Related to CORE-3035. + + 2010-06-25 06:45 hvlad + M builds/win32/msvc8/dsql_server.vcproj + M builds/win32/msvc8/dsql_server_classic.vcproj +Update MSVC8 build + + 2010-06-23 13:36 hvlad + M src/remote/server.cpp +Disable hard limit on number of worker threads. Something more smart should be implemented instead. + + 2010-06-22 00:56 asfernandes + M src/dsql/dsql.h +Misc + + 2010-06-22 00:53 asfernandes + M src/dsql/AggNodes.cpp + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/ExprNodes.cpp + M src/dsql/StmtNodes.cpp + M src/dsql/ddl.cpp + M src/dsql/dsql.h + M src/dsql/gen.cpp + M src/dsql/pass1.cpp + M src/jrd/DatabaseSnapshot.h + M src/jrd/isc_sync.cpp + M src/jrd/met.epp + M src/lock/lock.cpp +Misc/cleanup + + 2010-06-20 23:11 asfernandes + M src/dsql/parse.y +Misc + + 2010-06-20 14:49 asfernandes + M src/dsql/ExprNodes.cpp + M src/dsql/ExprNodes.h + M src/dsql/Nodes.h + M src/dsql/ddl.cpp + M src/dsql/ddl_proto.h +Improvement CORE-3057 - Allow the usage of blobs in COMPUTED BY expressions + + 2010-06-20 03:11 asfernandes + M src/dsql/StmtNodes.cpp +Fixed CORE-3047 - Wrong logic is used to resolve EXECUTE BLOCK parameters collations + + 2010-06-20 03:09 asfernandes + M src/dsql/ddl.cpp + M src/dsql/dsql.cpp +Fixed CORE-3047 - Wrong logic is used to resolve EXECUTE BLOCK parameters collations + + 2010-06-18 16:48 asfernandes + M src/dsql/node.h + M src/dsql/pass1.cpp +Cleanup + + 2010-06-18 13:13 asfernandes + M doc/sql.extensions/README.builtin_functions.txt +Misc + + 2010-06-18 12:49 asfernandes + M src/jrd/dfw.epp + M src/jrd/drq.h + M src/jrd/dyn_def.epp + M src/jrd/irq.h +Fixed CORE-3056 - Problems may happen when issuing DDL commands in the same transaction after CREATE COLLATION was issued + + 2010-06-18 12:41 asfernandes + M doc/sql.extensions/README.update_or_insert +Misc + + 2010-06-18 11:15 asfernandes + M src/jrd/unicode_util.cpp +Fix problem seen by Vlad where crash happens when our older ICU is found + + 2010-06-17 16:06 asfernandes + M src/dsql/ddl.cpp + M src/dsql/dsql.h + M src/dsql/gen.cpp +Change suggested by Claudio + + 2010-06-17 15:32 asfernandes + M src/jrd/DebugInterface.cpp +Fixed CORE-3055 - Variable/argument name could be absent or be wrong in error messages when more than 256 variables are used + + 2010-06-17 14:27 dimitr + M src/remote/xnet.cpp +Fixed a lock-up when connecting locally to the missing database file. The issue is old, but it could never fire prior to v3.0. + + 2010-06-17 07:34 alexpeshkoff + M src/jrd/DatabaseSnapshot.cpp + M src/jrd/DatabaseSnapshot.h + M src/jrd/event.cpp + M src/jrd/event_proto.h + M src/jrd/isc_s_proto.h + M src/jrd/isc_sync.cpp + M src/jrd/trace/TraceConfigStorage.cpp + M src/jrd/trace/TraceConfigStorage.h + M src/jrd/trace/TraceLog.cpp + M src/jrd/trace/TraceLog.h + M src/lock/lock.cpp + M src/lock/lock_proto.h +frontported fix for CORE-3021: Segfault in DEV_BUILD + + 2010-06-17 01:18 asfernandes + M builds/posix/make.shared.variables + M builds/win32/msvc9/dsql_server.vcproj + M builds/win32/msvc9/dsql_server_classic.vcproj + M src/dsql/AggNodes.cpp + A src/dsql/BlrWriter.cpp + A src/dsql/BlrWriter.h + M src/dsql/DdlNodes.epp + M src/dsql/ExprNodes.cpp + M src/dsql/Nodes.h + M src/dsql/StmtNodes.cpp + M src/dsql/ddl.cpp + M src/dsql/dsql.cpp + M src/dsql/dsql.h + M src/dsql/gen.cpp + M src/dsql/gen_proto.h + M src/dsql/pass1.cpp +Created class BlrWriter and reorganization (move BLR generation from statement to scratch) + + 2010-06-16 16:28 dimitr + M src/jrd/gds.cpp +Fixed unregistered error in the BLR printer output. + + 2010-06-16 12:44 alexpeshkoff + M src/dsql/StmtNodes.cpp +Fixed segfault during DEV_BUILD + + 2010-06-15 16:07 asfernandes + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/Nodes.h + M src/dsql/StmtNodes.cpp + M src/dsql/StmtNodes.h + M src/dsql/ddl.cpp + M src/dsql/ddl_proto.h + M src/dsql/dsql.cpp + M src/dsql/gen.cpp + M src/dsql/gen_proto.h + M src/dsql/parse.y + M src/dsql/pass1.cpp + M src/dsql/pass1_proto.h +1) Refactor PSQL support in DSQL. This started as subprocedure implementation, but I'm now separating things. +2) Fix thrown of isc_bad_default_value + + 2010-06-15 15:20 asfernandes + M builds/posix/make.rules +Do not remove cpp files generated from epp ones + + 2010-06-15 12:27 alexpeshkoff + M src/jrd/Relation.h + M src/jrd/cmp.cpp + M src/jrd/dfw.epp + M src/jrd/lck.cpp + M src/jrd/lck.h + M src/jrd/met.epp +Fixed CORE-3024: Error "no current record for fetch operation" after ALTER VIEW (and a lot of other possible inconsistencies) + + 2010-06-15 11:57 alexpeshkoff + M src/jrd/evl.cpp +Fixed CORE-3046: Assertion after ALTER TABLE + + 2010-06-12 16:32 asfernandes + M src/jrd/met.epp +Misc + + 2010-06-12 16:28 asfernandes + M src/common/classes/MetaName.h + M src/dsql/metd_proto.h + M src/jrd/exe.h + M src/jrd/par.cpp +Fixed CORE-3038 - The insert failed because a column definition includes validation + + 2010-06-10 16:08 asfernandes + M src/jrd/common.h + M src/jrd/gds.cpp +Fix debug code + + 2010-06-10 08:41 alexpeshkoff + M src/gpre/c_cxx.cpp +frontported fix for CORE-3022: gpre C++ compiler warnings with GCC 4.4.1 + + 2010-06-10 02:03 asfernandes + M src/dsql/StmtNodes.cpp + M src/dsql/StmtNodes.h + M src/dsql/dsql.h + M src/dsql/gen.cpp + M src/dsql/node.h + M src/dsql/parse.y + M src/dsql/pass1.cpp +Improvement CORE-3020 - Add clause RETURNING ... INTO ... to MERGE statement + + 2010-06-09 11:53 alexpeshkoff + M builds/install/arch-specific/linux/misc/firebird.init.d.gentoo.in +frontported fix for CORE-3019: Startup failure of SS and SC on linux gentoo + + 2010-06-08 14:44 paulbeach + M builds/posix/postfix.darwin + M builds/posix/prefix.darwin_i386 + M builds/posix/prefix.darwin_x86_64 + M extern/icu/source/config/mh-darwin +Grand Central Dispatch - 10.6 Darwin only + + 2010-06-08 13:35 alexpeshkoff + M src/common/classes/semaphore.cpp + M src/common/classes/semaphore.h +Mac port - use dispatch semaphores + + 2010-06-08 13:35 alexpeshkoff + M builds/make.new/config/install-sh +misc + + 2010-06-06 22:24 hvlad + M ChangeLog +Update ChangeLog from latest CVS version + + 2010-06-05 00:48 asfernandes + M src/jrd/build_no.h + M src/misc/writeBuildNum.sh +Current build no (ported from CVS) + + 2010-06-05 00:48 asfernandes + M src/jrd/DatabaseSnapshot.cpp + M src/jrd/cch.cpp + M src/jrd/isc.h + M src/jrd/isc_s_proto.h + M src/jrd/isc_sync.cpp + M src/jrd/trace/TraceConfigStorage.cpp +Port from CVS Vlad's fixes for CORE-3015, CORE-3016 and CORE-3017 + + 2010-06-04 23:14 asfernandes + M ChangeLog + M Makefile.in + M acx_pthread.m4 + M autogen.sh + M binreloc.m4 + M builds/install/arch-specific/aix/Makefile.in + M builds/install/arch-specific/aix/classic/makeInstallImage.sh.in + M builds/install/arch-specific/aix/classic/rpmfiles.txt.in + M builds/install/arch-specific/aix/classic/rpmheader.txt.in + M builds/install/arch-specific/aix/misc/aixLibrary.sh.in + M builds/install/arch-specific/aix/misc/firebird.init.d.aix.in + M builds/install/arch-specific/aix/misc/postinstall.sh.in + M builds/install/arch-specific/aix/misc/postuninstall.sh.in + M builds/install/arch-specific/aix/misc/preinstall.sh.in + M builds/install/arch-specific/aix/misc/preuninstall.sh.in + M builds/install/arch-specific/aix/misc/rc.config.firebird.aix.in + M builds/install/arch-specific/aix/misc/tarinstall.sh.in + M builds/install/arch-specific/aix/misc/tarmaininstall.sh.in + M builds/install/arch-specific/aix/misc/tarmainuninstall.sh.in + M builds/install/arch-specific/aix/misc/taruninstall.sh.in + M builds/install/arch-specific/darwin/Description.plist + M builds/install/arch-specific/darwin/FB.info + M builds/install/arch-specific/darwin/Firebird.startupitem/Firebird + M builds/install/arch-specific/darwin/Firebird.startupitem/Resources/English.lproj/Localizable.strings + M builds/install/arch-specific/darwin/Firebird.startupitem/StartupParameters.plist + M builds/install/arch-specific/darwin/FrameworkInfo.plist + M builds/install/arch-specific/darwin/Info.plist + M builds/install/arch-specific/darwin/License.txt + M builds/install/arch-specific/darwin/Makefile.in + M builds/install/arch-specific/darwin/PkgInfo + M builds/install/arch-specific/darwin/Readme.txt + M builds/install/arch-specific/darwin/Welcome.txt + M builds/install/arch-specific/darwin/aliases.conf.in + M builds/install/arch-specific/darwin/buildno.c + M builds/install/arch-specific/darwin/buildsuffix.c + M builds/install/arch-specific/darwin/changeMultiConnectMode + M builds/install/arch-specific/darwin/fullvers.c + M builds/install/arch-specific/darwin/install-script + M builds/install/arch-specific/darwin/launchd.org.firebird.gds.plist + M builds/install/arch-specific/darwin/majorvers.c + M builds/install/arch-specific/darwin/minorvers.c + M builds/install/arch-specific/darwin/preinstall-script + M builds/install/arch-specific/darwin/preupgrade-script + M builds/install/arch-specific/darwin/revno.c + M builds/install/arch-specific/freebsd/Makefile.in + M builds/install/arch-specific/freebsd/freebsdLibrary.sh.in + M builds/install/arch-specific/freebsd/install.sh.in + M builds/install/arch-specific/hpux/Makefile.in + M builds/install/arch-specific/hpux/classic/firebirdCS.psf.in + M builds/install/arch-specific/hpux/classic/makeinstallImage.sh.in + M builds/install/arch-specific/hpux/classic/postInstall.sh.in + M builds/install/arch-specific/hpux/classic/postUninstall.sh.in + M builds/install/arch-specific/hpux/classic/preInstall.sh.in + M builds/install/arch-specific/hpux/classic/preUninstall.sh.in + M builds/install/arch-specific/hpux/classic/tarInstall.sh.in + M builds/install/arch-specific/hpux/classic/tarUninstall.sh.in + M builds/install/arch-specific/hpux/classic/tarmainInstall.sh.in + M builds/install/arch-specific/hpux/classic/tarmainUninstall.sh.in + M builds/install/arch-specific/hpux/misc/changedbaPassword.sh.in + M builds/install/arch-specific/hpux/misc/changegdslibrarycompatibleLink.sh.in + M builds/install/arch-specific/hpux/misc/createaliasDB.sh.in + M builds/install/arch-specific/hpux/misc/firebird.init.d.hpux.in + M builds/install/arch-specific/hpux/misc/hpuxLibrary.sh.in + M builds/install/arch-specific/hpux/misc/rc.config.firebird.hpux.in + M builds/install/arch-specific/hpux/super/makeinstallImage.sh.in + M builds/install/arch-specific/hpux/super/postInstall.sh.in + M builds/install/arch-specific/hpux/super/postUninstall.sh.in + M builds/install/arch-specific/hpux/super/preInstall.sh.in + M builds/install/arch-specific/hpux/super/preUninstall.sh.in + M builds/install/arch-specific/hpux/super/tarInstall.sh.in + M builds/install/arch-specific/hpux/super/tarUninstall.sh.in + M builds/install/arch-specific/hpux/super/tarmainInstall.sh.in + M builds/install/arch-specific/hpux/super/tarmainUninstall.sh.in + M builds/install/arch-specific/linux/Makefile.in + M builds/install/arch-specific/linux/classic/rpmfiles.txt.in + M builds/install/arch-specific/linux/classic/rpmheader.txt.in + M builds/install/arch-specific/linux/misc/README + M builds/install/arch-specific/linux/misc/firebird.init.d.debian.in + M builds/install/arch-specific/linux/misc/firebird.init.d.generic.in + M builds/install/arch-specific/linux/misc/firebird.init.d.gentoo.in + M builds/install/arch-specific/linux/misc/firebird.init.d.mandrake.in + M builds/install/arch-specific/linux/misc/firebird.init.d.slackware.in + M builds/install/arch-specific/linux/misc/firebird.init.d.suse.in + M builds/install/arch-specific/linux/misc/firebird.xinetd.in + M builds/install/arch-specific/linux/misc/linuxLibrary.sh.in + M builds/install/arch-specific/linux/misc/makeInstallImage.sh.in + M builds/install/arch-specific/linux/misc/postinstall.sh.in + M builds/install/arch-specific/linux/misc/postuninstall.sh.in + M builds/install/arch-specific/linux/misc/preinstall.sh.in + M builds/install/arch-specific/linux/misc/preuninstall.sh.in + M builds/install/arch-specific/linux/misc/rc.config.firebird.in + M builds/install/arch-specific/linux/misc/tarMainInstall.sh.in + M builds/install/arch-specific/linux/misc/tarMainUninstall.sh.in + M builds/install/arch-specific/linux/misc/tarinstall.sh.in + M builds/install/arch-specific/linux/misc/taruninstall.sh.in + M builds/install/arch-specific/linux/super/rpmfiles.txt.in + M builds/install/arch-specific/linux/super/rpmheader.txt.in + M builds/install/arch-specific/mingw/Makefile.in + M builds/install/arch-specific/mingw/super/Readme.txt + M builds/install/arch-specific/netbsd/Makefile.in + M builds/install/arch-specific/netbsd/install.sh.in + M builds/install/arch-specific/solaris/CS/gds_db-tcp.xml + M builds/install/arch-specific/solaris/CS/pkginfo.in + M builds/install/arch-specific/solaris/CS/postinstall.in + M builds/install/arch-specific/solaris/CS/postremove.in + M builds/install/arch-specific/solaris/CS/preinstall.in + M builds/install/arch-specific/solaris/CS/prototype.icu.in + M builds/install/arch-specific/solaris/CS/prototype.in + M builds/install/arch-specific/solaris/Makefile.in + M builds/install/arch-specific/solaris/SS/gds_db-tcp.xml + M builds/install/arch-specific/solaris/SS/pkginfo.in + M builds/install/arch-specific/solaris/SS/postinstall.in + M builds/install/arch-specific/solaris/SS/postremove.in + M builds/install/arch-specific/solaris/SS/preinstall.in + M builds/install/arch-specific/solaris/SS/prototype.icu.in + M builds/install/arch-specific/solaris/SS/prototype.in + M builds/install/arch-specific/solaris/libgcc/pkginfolg.in + M builds/install/arch-specific/solaris/libgcc/prototypelg.in + M builds/install/arch-specific/solx86/Makefile.in + M builds/install/arch-specific/win32/After_Installation.url + M builds/install/arch... [truncated message content] |
From: <asf...@us...> - 2010-09-17 03:15:41
|
Revision: 51564 http://firebird.svn.sourceforge.net/firebird/?rev=51564&view=rev Author: asfernandes Date: 2010-09-17 03:15:32 +0000 (Fri, 17 Sep 2010) Log Message: ----------- 1) Refactor all types of boolean nodes. 2) Remove the scratch from the nodes. Modified Paths: -------------- firebird/trunk/builds/posix/make.shared.variables firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj.filters firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj.filters firebird/trunk/builds/win32/msvc9/dsql_server.vcproj firebird/trunk/builds/win32/msvc9/dsql_server_classic.vcproj firebird/trunk/src/dsql/AggNodes.cpp firebird/trunk/src/dsql/AggNodes.h firebird/trunk/src/dsql/DdlNodes.epp firebird/trunk/src/dsql/DdlNodes.h firebird/trunk/src/dsql/DsqlCompilerScratch.cpp firebird/trunk/src/dsql/DsqlCompilerScratch.h firebird/trunk/src/dsql/ExprNodes.cpp firebird/trunk/src/dsql/ExprNodes.h firebird/trunk/src/dsql/Nodes.h firebird/trunk/src/dsql/PackageNodes.epp firebird/trunk/src/dsql/PackageNodes.h firebird/trunk/src/dsql/Parser.h firebird/trunk/src/dsql/StmtNodes.cpp firebird/trunk/src/dsql/StmtNodes.h firebird/trunk/src/dsql/Visitors.h firebird/trunk/src/dsql/WinNodes.cpp firebird/trunk/src/dsql/WinNodes.h firebird/trunk/src/dsql/btyacc_fb.ske firebird/trunk/src/dsql/ddl.cpp firebird/trunk/src/dsql/dsql.cpp firebird/trunk/src/dsql/dsql.h firebird/trunk/src/dsql/gen.cpp firebird/trunk/src/dsql/keywords.cpp firebird/trunk/src/dsql/make.cpp firebird/trunk/src/dsql/node.h firebird/trunk/src/dsql/parse.y firebird/trunk/src/dsql/pass1.cpp firebird/trunk/src/dsql/pass1_proto.h firebird/trunk/src/jrd/Optimizer.cpp firebird/trunk/src/jrd/Optimizer.h firebird/trunk/src/jrd/RecordSourceNodes.cpp firebird/trunk/src/jrd/cmp.cpp firebird/trunk/src/jrd/cmp_proto.h firebird/trunk/src/jrd/evl.cpp firebird/trunk/src/jrd/exe.h firebird/trunk/src/jrd/nod.h firebird/trunk/src/jrd/opt.cpp firebird/trunk/src/jrd/par.cpp firebird/trunk/src/jrd/recsrc/FilteredStream.cpp firebird/trunk/src/misc/blrtable.cpp Added Paths: ----------- firebird/trunk/src/dsql/BoolNodes.cpp firebird/trunk/src/dsql/BoolNodes.h Modified: firebird/trunk/builds/posix/make.shared.variables =================================================================== --- firebird/trunk/builds/posix/make.shared.variables 2010-09-16 07:29:28 UTC (rev 51563) +++ firebird/trunk/builds/posix/make.shared.variables 2010-09-17 03:15:32 UTC (rev 51564) @@ -81,8 +81,8 @@ DSQL_ServerFiles= metd.epp DSqlDataTypeUtil.cpp \ ddl.cpp dsql.cpp errd.cpp gen.cpp hsh.cpp make.cpp \ movd.cpp parse.cpp Parser.cpp pass1.cpp \ - DdlNodes.epp PackageNodes.epp AggNodes.cpp BlrWriter.cpp DsqlCompilerScratch.cpp \ - ExprNodes.cpp StmtNodes.cpp WinNodes.cpp + DdlNodes.epp PackageNodes.epp AggNodes.cpp BlrWriter.cpp BoolNodes.cpp \ + DsqlCompilerScratch.cpp ExprNodes.cpp StmtNodes.cpp WinNodes.cpp DSQL_Files = $(DSQL_ClientFiles) $(DSQL_ServerFiles) Modified: firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj =================================================================== --- firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj 2010-09-16 07:29:28 UTC (rev 51563) +++ firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj 2010-09-17 03:15:32 UTC (rev 51564) @@ -140,6 +140,7 @@ <ItemGroup> <ClCompile Include="..\..\..\src\dsql\AggNodes.cpp" /> <ClCompile Include="..\..\..\src\dsql\BlrWriter.cpp" /> + <ClCompile Include="..\..\..\src\dsql\BoolNodes.cpp" /> <ClCompile Include="..\..\..\src\dsql\ddl.cpp" /> <ClCompile Include="..\..\..\src\dsql\dsql.cpp" /> <ClCompile Include="..\..\..\src\dsql\DsqlCompilerScratch.cpp" /> @@ -179,6 +180,7 @@ <ClInclude Include="..\..\..\src\dsql\array_proto.h" /> <ClInclude Include="..\..\..\src\dsql\blob_proto.h" /> <ClInclude Include="..\..\..\src\dsql\BlrWriter.h" /> + <ClInclude Include="..\..\..\src\dsql\BoolNodes.h" /> <ClInclude Include="..\..\..\src\dsql\chars.h" /> <ClInclude Include="..\..\..\src\dsql\ddl_proto.h" /> <ClInclude Include="..\..\..\src\dsql\DdlNodes.h" /> Modified: firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj.filters =================================================================== --- firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj.filters 2010-09-16 07:29:28 UTC (rev 51563) +++ firebird/trunk/builds/win32/msvc10/dsql_server.vcxproj.filters 2010-09-17 03:15:32 UTC (rev 51564) @@ -28,6 +28,9 @@ <ClCompile Include="..\..\..\src\dsql\BlrWriter.cpp"> <Filter>DSQL files</Filter> </ClCompile> + <ClCompile Include="..\..\..\src\dsql\BoolNodes.cpp"> + <Filter>DSQL files</Filter> + </ClCompile> <ClCompile Include="..\..\..\src\dsql\ddl.cpp"> <Filter>DSQL files</Filter> </ClCompile> @@ -135,6 +138,9 @@ <ClInclude Include="..\..\..\src\dsql\BlrWriter.h"> <Filter>Header files</Filter> </ClInclude> + <ClInclude Include="..\..\..\src\dsql\BoolNodes.h"> + <Filter>Header files</Filter> + </ClInclude> <ClInclude Include="..\..\..\src\dsql\chars.h"> <Filter>Header files</Filter> </ClInclude> Modified: firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj =================================================================== --- firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj 2010-09-16 07:29:28 UTC (rev 51563) +++ firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj 2010-09-17 03:15:32 UTC (rev 51564) @@ -140,6 +140,7 @@ <ItemGroup> <ClCompile Include="..\..\..\src\dsql\AggNodes.cpp" /> <ClCompile Include="..\..\..\src\dsql\BlrWriter.cpp" /> + <ClCompile Include="..\..\..\src\dsql\BoolNodes.cpp" /> <ClCompile Include="..\..\..\src\dsql\ddl.cpp" /> <ClCompile Include="..\..\..\src\dsql\dsql.cpp" /> <ClCompile Include="..\..\..\src\dsql\DsqlCompilerScratch.cpp" /> @@ -179,6 +180,7 @@ <ClInclude Include="..\..\..\src\dsql\array_proto.h" /> <ClInclude Include="..\..\..\src\dsql\blob_proto.h" /> <ClInclude Include="..\..\..\src\dsql\BlrWriter.h" /> + <ClInclude Include="..\..\..\src\dsql\BoolNodes.h" /> <ClInclude Include="..\..\..\src\dsql\chars.h" /> <ClInclude Include="..\..\..\src\dsql\ddl_proto.h" /> <ClInclude Include="..\..\..\src\dsql\DdlNodes.h" /> Modified: firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj.filters =================================================================== --- firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj.filters 2010-09-16 07:29:28 UTC (rev 51563) +++ firebird/trunk/builds/win32/msvc10/dsql_server_classic.vcxproj.filters 2010-09-17 03:15:32 UTC (rev 51564) @@ -28,6 +28,9 @@ <ClCompile Include="..\..\..\src\dsql\BlrWriter.cpp"> <Filter>DSQL files</Filter> </ClCompile> + <ClCompile Include="..\..\..\src\dsql\BoolNodes.cpp"> + <Filter>DSQL files</Filter> + </ClCompile> <ClCompile Include="..\..\..\src\dsql\ddl.cpp"> <Filter>DSQL files</Filter> </ClCompile> @@ -135,6 +138,9 @@ <ClInclude Include="..\..\..\src\dsql\BlrWriter.h"> <Filter>Header files</Filter> </ClInclude> + <ClInclude Include="..\..\..\src\dsql\BoolNodes.h"> + <Filter>Header files</Filter> + </ClInclude> <ClInclude Include="..\..\..\src\dsql\chars.h"> <Filter>Header files</Filter> </ClInclude> Modified: firebird/trunk/builds/win32/msvc9/dsql_server.vcproj =================================================================== --- firebird/trunk/builds/win32/msvc9/dsql_server.vcproj 2010-09-16 07:29:28 UTC (rev 51563) +++ firebird/trunk/builds/win32/msvc9/dsql_server.vcproj 2010-09-17 03:15:32 UTC (rev 51564) @@ -275,6 +275,10 @@ > </File> <File + RelativePath="..\..\..\src\dsql\BoolNodes.cpp" + > + </File> + <File RelativePath="..\..\..\src\dsql\ddl.cpp" > </File> @@ -430,6 +434,10 @@ > </File> <File + RelativePath="..\..\..\src\dsql\BoolNodes.h" + > + </File> + <File RelativePath="..\..\..\src\dsql\chars.h" > </File> Modified: firebird/trunk/builds/win32/msvc9/dsql_server_classic.vcproj =================================================================== --- firebird/trunk/builds/win32/msvc9/dsql_server_classic.vcproj 2010-09-16 07:29:28 UTC (rev 51563) +++ firebird/trunk/builds/win32/msvc9/dsql_server_classic.vcproj 2010-09-17 03:15:32 UTC (rev 51564) @@ -275,6 +275,10 @@ > </File> <File + RelativePath="..\..\..\src\dsql\BoolNodes.cpp" + > + </File> + <File RelativePath="..\..\..\src\dsql\ddl.cpp" > </File> @@ -430,6 +434,10 @@ > </File> <File + RelativePath="..\..\..\src\dsql\BoolNodes.h" + > + </File> + <File RelativePath="..\..\..\src\dsql\chars.h" > </File> Modified: firebird/trunk/src/dsql/AggNodes.cpp =================================================================== --- firebird/trunk/src/dsql/AggNodes.cpp 2010-09-16 07:29:28 UTC (rev 51563) +++ firebird/trunk/src/dsql/AggNodes.cpp 2010-09-17 03:15:32 UTC (rev 51564) @@ -53,7 +53,7 @@ AggNode::AggNode(MemoryPool& pool, const AggInfo& aAggInfo, bool aDistinct, bool aDialect1, dsql_nod* aArg) - : TypedNode<ExprNode, ExprNode::TYPE_AGGREGATE>(pool), + : TypedNode<ValueExprNode, ExprNode::TYPE_AGGREGATE>(pool), aggInfo(aAggInfo), distinct(aDistinct), dialect1(aDialect1), @@ -65,7 +65,7 @@ addChildNode(dsqlArg, arg); } -ExprNode* AggNode::internalDsqlPass() +AggNode* AggNode::dsqlPass(DsqlCompilerScratch* dsqlScratch) { if (dsqlScratch->isPsql()) { @@ -82,10 +82,7 @@ Arg::Gds(isc_dsql_agg_ref_err)); } - AggNode* node = dsqlCopy(); - node->dsqlScratch = dsqlScratch; - - return node; + return dsqlCopy(dsqlScratch); } void AggNode::print(string& text, Array<dsql_nod*>& nodes) const @@ -140,7 +137,7 @@ // If the deepestLevel is the same as the current scopeLevel this is an // aggregate that belongs to the current context. - if (visitor.deepestLevel == dsqlScratch->scopeLevel) + if (visitor.deepestLevel == visitor.dsqlScratch->scopeLevel) aggregate = true; else { @@ -234,15 +231,15 @@ bool AggNode::dsqlFieldRemapper(FieldRemapper& visitor) { - AggregateFinder aggFinder(dsqlScratch, false); - aggFinder.deepestLevel = dsqlScratch->scopeLevel; + AggregateFinder aggFinder(visitor.dsqlScratch, false); + aggFinder.deepestLevel = visitor.dsqlScratch->scopeLevel; aggFinder.currentLevel = visitor.currentLevel; if (dsqlAggregateFinder(aggFinder)) { - if (!visitor.window && dsqlScratch->scopeLevel == aggFinder.deepestLevel) + if (!visitor.window && visitor.dsqlScratch->scopeLevel == aggFinder.deepestLevel) { - visitor.replaceNode(PASS1_post_map(dsqlScratch, visitor.getCurrentNode(), + visitor.replaceNode(PASS1_post_map(visitor.dsqlScratch, visitor.getCurrentNode(), visitor.context, visitor.partitionNode, visitor.orderNode)); return false; } @@ -273,7 +270,7 @@ parameter->par_name = parameter->par_alias = aggInfo.name; } -void AggNode::genBlr() +void AggNode::genBlr(DsqlCompilerScratch* dsqlScratch) { if (aggInfo.blr) // Is this a standard aggregate function? dsqlScratch->appendUChar((distinct ? aggInfo.distinctBlr : aggInfo.blr)); @@ -455,7 +452,7 @@ return node; } -void AvgAggNode::make(dsc* desc, dsql_nod* nullReplacement) +void AvgAggNode::make(DsqlCompilerScratch* dsqlScratch, dsc* desc, dsql_nod* nullReplacement) { MAKE_desc(dsqlScratch, desc, dsqlArg, nullReplacement); desc->setNullable(true); @@ -554,7 +551,7 @@ } } -ExprNode* AvgAggNode::copy(thread_db* tdbb, NodeCopier& copier) +ValueExprNode* AvgAggNode::copy(thread_db* tdbb, NodeCopier& copier) { AvgAggNode* node = FB_NEW(*tdbb->getDefaultPool()) AvgAggNode(*tdbb->getDefaultPool(), distinct, dialect1); @@ -631,7 +628,7 @@ return &impureTemp->vlu_desc; } -AggNode* AvgAggNode::dsqlCopy() const +AggNode* AvgAggNode::dsqlCopy(DsqlCompilerScratch* dsqlScratch) const { return FB_NEW(getPool()) AvgAggNode(getPool(), distinct, dialect1, PASS1_node(dsqlScratch, dsqlArg)); @@ -660,7 +657,7 @@ return node; } -void ListAggNode::make(dsc* desc, dsql_nod* nullReplacement) +void ListAggNode::make(DsqlCompilerScratch* dsqlScratch, dsc* desc, dsql_nod* nullReplacement) { MAKE_desc(dsqlScratch, desc, dsqlArg, nullReplacement); desc->makeBlob(desc->getBlobSubType(), desc->getTextType()); @@ -680,7 +677,7 @@ desc->makeBlob(desc->getBlobSubType(), desc->getTextType()); } -ExprNode* ListAggNode::copy(thread_db* tdbb, NodeCopier& copier) +ValueExprNode* ListAggNode::copy(thread_db* tdbb, NodeCopier& copier) { ListAggNode* node = FB_NEW(*tdbb->getDefaultPool()) ListAggNode(*tdbb->getDefaultPool(), distinct); @@ -756,7 +753,7 @@ return &impure->vlu_desc; } -AggNode* ListAggNode::dsqlCopy() const +AggNode* ListAggNode::dsqlCopy(DsqlCompilerScratch* dsqlScratch) const { return FB_NEW(getPool()) ListAggNode(getPool(), distinct, PASS1_node(dsqlScratch, dsqlArg), PASS1_node(dsqlScratch, dsqlDelimiter)); @@ -784,20 +781,20 @@ return node; } -void CountAggNode::make(dsc* desc, dsql_nod* /*nullReplacement*/) +void CountAggNode::make(DsqlCompilerScratch* /*dsqlScratch*/, dsc* desc, dsql_nod* /*nullReplacement*/) { desc->makeLong(0); } -void CountAggNode::genBlr() +void CountAggNode::genBlr(DsqlCompilerScratch* dsqlScratch) { if (dsqlArg) - AggNode::genBlr(); + AggNode::genBlr(dsqlScratch); else dsqlScratch->appendUChar(blr_agg_count); } -void CountAggNode::getDesc(thread_db* tdbb, CompilerScratch* /*csb*/, dsc* desc) +void CountAggNode::getDesc(thread_db* /*tdbb*/, CompilerScratch* /*csb*/, dsc* desc) { desc->dsc_dtype = dtype_long; desc->dsc_length = sizeof(SLONG); @@ -806,7 +803,7 @@ desc->dsc_flags = 0; } -ExprNode* CountAggNode::copy(thread_db* tdbb, NodeCopier& copier) +ValueExprNode* CountAggNode::copy(thread_db* tdbb, NodeCopier& copier) { CountAggNode* node = FB_NEW(*tdbb->getDefaultPool()) CountAggNode(*tdbb->getDefaultPool(), distinct); @@ -838,7 +835,7 @@ return &impure->vlu_desc; } -AggNode* CountAggNode::dsqlCopy() const +AggNode* CountAggNode::dsqlCopy(DsqlCompilerScratch* dsqlScratch) const { return FB_NEW(getPool()) CountAggNode(getPool(), distinct, PASS1_node(dsqlScratch, dsqlArg)); @@ -865,7 +862,7 @@ return node; } -void SumAggNode::make(dsc* desc, dsql_nod* nullReplacement) +void SumAggNode::make(DsqlCompilerScratch* dsqlScratch, dsc* desc, dsql_nod* nullReplacement) { MAKE_desc(dsqlScratch, desc, dsqlArg, nullReplacement); desc->setNullable(true); @@ -1041,7 +1038,7 @@ ERR_post(Arg::Gds(isc_datype_notsup)); // data type not supported for arithmetic } -ExprNode* SumAggNode::copy(thread_db* tdbb, NodeCopier& copier) +ValueExprNode* SumAggNode::copy(thread_db* tdbb, NodeCopier& copier) { SumAggNode* node = FB_NEW(*tdbb->getDefaultPool()) SumAggNode(*tdbb->getDefaultPool(), distinct, dialect1); @@ -1086,7 +1083,7 @@ return &impure->vlu_desc; } -AggNode* SumAggNode::dsqlCopy() const +AggNode* SumAggNode::dsqlCopy(DsqlCompilerScratch* dsqlScratch) const { return FB_NEW(getPool()) SumAggNode(getPool(), distinct, dialect1, PASS1_node(dsqlScratch, dsqlArg)); @@ -1113,7 +1110,7 @@ return node; } -void MaxMinAggNode::make(dsc* desc, dsql_nod* nullReplacement) +void MaxMinAggNode::make(DsqlCompilerScratch* dsqlScratch, dsc* desc, dsql_nod* nullReplacement) { MAKE_desc(dsqlScratch, desc, dsqlArg, nullReplacement); desc->setNullable(true); @@ -1124,7 +1121,7 @@ CMP_get_desc(tdbb, csb, arg, desc); } -ExprNode* MaxMinAggNode::copy(thread_db* tdbb, NodeCopier& copier) +ValueExprNode* MaxMinAggNode::copy(thread_db* tdbb, NodeCopier& copier) { MaxMinAggNode* node = FB_NEW(*tdbb->getDefaultPool()) MaxMinAggNode(*tdbb->getDefaultPool(), type); @@ -1167,7 +1164,7 @@ return &impure->vlu_desc; } -AggNode* MaxMinAggNode::dsqlCopy() const +AggNode* MaxMinAggNode::dsqlCopy(DsqlCompilerScratch* dsqlScratch) const { return FB_NEW(getPool()) MaxMinAggNode(getPool(), type, PASS1_node(dsqlScratch, dsqlArg)); } Modified: firebird/trunk/src/dsql/AggNodes.h =================================================================== --- firebird/trunk/src/dsql/AggNodes.h 2010-09-16 07:29:28 UTC (rev 51563) +++ firebird/trunk/src/dsql/AggNodes.h 2010-09-17 03:15:32 UTC (rev 51564) @@ -37,9 +37,9 @@ static DmlNode* parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb, UCHAR blrOp); - virtual void make(dsc* desc, dsql_nod* nullReplacement); + virtual void make(DsqlCompilerScratch* dsqlScratch, dsc* desc, dsql_nod* nullReplacement); virtual void getDesc(thread_db* tdbb, CompilerScratch* csb, dsc* desc); - virtual ExprNode* copy(thread_db* tdbb, NodeCopier& copier); + virtual ValueExprNode* copy(thread_db* tdbb, NodeCopier& copier); virtual ExprNode* pass2(thread_db* tdbb, CompilerScratch* csb); virtual void aggInit(thread_db* tdbb, jrd_req* request) const; @@ -47,7 +47,7 @@ virtual dsc* aggExecute(thread_db* tdbb, jrd_req* request) const; protected: - virtual AggNode* dsqlCopy() const; + virtual AggNode* dsqlCopy(DsqlCompilerScratch* dsqlScratch) const; private: USHORT tempImpure; @@ -61,11 +61,11 @@ static DmlNode* parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb, UCHAR blrOp); - virtual void make(dsc* desc, dsql_nod* nullReplacement); + virtual void make(DsqlCompilerScratch* dsqlScratch, dsc* desc, dsql_nod* nullReplacement); virtual bool setParameterType(DsqlCompilerScratch* dsqlScratch, dsql_nod* node, bool forceVarChar) const; virtual void getDesc(thread_db* tdbb, CompilerScratch* csb, dsc* desc); - virtual ExprNode* copy(thread_db* tdbb, NodeCopier& copier); + virtual ValueExprNode* copy(thread_db* tdbb, NodeCopier& copier); virtual void checkOrderedWindowCapable() const { @@ -80,7 +80,7 @@ virtual dsc* aggExecute(thread_db* tdbb, jrd_req* request) const; protected: - virtual AggNode* dsqlCopy() const; + virtual AggNode* dsqlCopy(DsqlCompilerScratch* dsqlScratch) const; private: dsql_nod* dsqlDelimiter; @@ -94,17 +94,17 @@ static DmlNode* parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb, UCHAR blrOp); - virtual void make(dsc* desc, dsql_nod* nullReplacement); - virtual void genBlr(); + virtual void make(DsqlCompilerScratch* dsqlScratch, dsc* desc, dsql_nod* nullReplacement); + virtual void genBlr(DsqlCompilerScratch* dsqlScratch); virtual void getDesc(thread_db* tdbb, CompilerScratch* csb, dsc* desc); - virtual ExprNode* copy(thread_db* tdbb, NodeCopier& copier); + virtual ValueExprNode* copy(thread_db* tdbb, NodeCopier& copier); virtual void aggInit(thread_db* tdbb, jrd_req* request) const; virtual void aggPass(thread_db* tdbb, jrd_req* request, dsc* desc) const; virtual dsc* aggExecute(thread_db* tdbb, jrd_req* request) const; protected: - virtual AggNode* dsqlCopy() const; + virtual AggNode* dsqlCopy(DsqlCompilerScratch* dsqlScratch) const; }; class SumAggNode : public AggNode @@ -114,16 +114,16 @@ static DmlNode* parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb, UCHAR blrOp); - virtual void make(dsc* desc, dsql_nod* nullReplacement); + virtual void make(DsqlCompilerScratch* dsqlScratch, dsc* desc, dsql_nod* nullReplacement); virtual void getDesc(thread_db* tdbb, CompilerScratch* csb, dsc* desc); - virtual ExprNode* copy(thread_db* tdbb, NodeCopier& copier); + virtual ValueExprNode* copy(thread_db* tdbb, NodeCopier& copier); virtual void aggInit(thread_db* tdbb, jrd_req* request) const; virtual void aggPass(thread_db* tdbb, jrd_req* request, dsc* desc) const; virtual dsc* aggExecute(thread_db* tdbb, jrd_req* request) const; protected: - virtual AggNode* dsqlCopy() const; + virtual AggNode* dsqlCopy(DsqlCompilerScratch* dsqlScratch) const; }; class MaxMinAggNode : public AggNode @@ -139,16 +139,16 @@ static DmlNode* parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb, UCHAR blrOp); - virtual void make(dsc* desc, dsql_nod* nullReplacement); + virtual void make(DsqlCompilerScratch* dsqlScratch, dsc* desc, dsql_nod* nullReplacement); virtual void getDesc(thread_db* tdbb, CompilerScratch* csb, dsc* desc); - virtual ExprNode* copy(thread_db* tdbb, NodeCopier& copier); + virtual ValueExprNode* copy(thread_db* tdbb, NodeCopier& copier); virtual void aggInit(thread_db* tdbb, jrd_req* request) const; virtual void aggPass(thread_db* tdbb, jrd_req* request, dsc* desc) const; virtual dsc* aggExecute(thread_db* tdbb, jrd_req* request) const; protected: - virtual AggNode* dsqlCopy() const; + virtual AggNode* dsqlCopy(DsqlCompilerScratch* dsqlScratch) const; public: const MaxMinType type; Added: firebird/trunk/src/dsql/BoolNodes.cpp =================================================================== --- firebird/trunk/src/dsql/BoolNodes.cpp (rev 0) +++ firebird/trunk/src/dsql/BoolNodes.cpp 2010-09-17 03:15:32 UTC (rev 51564) @@ -0,0 +1,1842 @@ +/* + * 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): ______________________________________. + * Adriano dos Santos Fernandes - refactored from pass1.cpp, gen.cpp, cmp.cpp, par.cpp and evl.cpp + */ + +#include "firebird.h" +#include "../jrd/common.h" +#include "../common/classes/VaryStr.h" +#include "../dsql/BoolNodes.h" +#include "../dsql/node.h" +#include "../jrd/align.h" +#include "../jrd/blr.h" +#include "../jrd/quad.h" +#include "../jrd/tra.h" +#include "../jrd/recsrc/RecordSource.h" +#include "../jrd/blb_proto.h" +#include "../jrd/cmp_proto.h" +#include "../jrd/evl_proto.h" +#include "../jrd/intl_proto.h" +#include "../jrd/mov_proto.h" +#include "../jrd/par_proto.h" +#include "../dsql/ddl_proto.h" +#include "../dsql/errd_proto.h" +#include "../dsql/gen_proto.h" +#include "../dsql/make_proto.h" +#include "../dsql/pass1_proto.h" + +using namespace Firebird; +using namespace Jrd; + +#include "gen/blrtable.h" + +namespace Jrd { + + +// Maximum members in "IN" list. For eg. SELECT * FROM T WHERE F IN (1, 2, 3, ...) +// Bug 10061, bsriram - 19-Apr-1999 +static const int MAX_MEMBER_LIST = 1500; + +static const int TEMP_LENGTH = 128; + + +//-------------------- + + +namespace +{ + // Copy sub expressions (including subqueries). + class SubExprNodeCopier : public NodeCopier + { + public: + explicit SubExprNodeCopier(CompilerScratch* aCsb) + : NodeCopier(aCsb, localMap) + { + // Initialize the map so all streams initially resolve to the original number. As soon + // copy creates new streams, the map are being overwritten. + for (unsigned i = 0; i < JrdStatement::MAP_LENGTH; ++i) + localMap[i] = i; + } + + private: + UCHAR localMap[JrdStatement::MAP_LENGTH]; + }; +} // namespace + + +//-------------------- + + +static RegisterNode<BinaryBoolNode> regBinaryBoolNodeAnd(blr_and); +static RegisterNode<BinaryBoolNode> regBinaryBoolNodeOr(blr_or); + +BinaryBoolNode::BinaryBoolNode(MemoryPool& pool, UCHAR aBlrOp, dsql_nod* aArg1, dsql_nod* aArg2) + : TypedNode<BoolExprNode, ExprNode::TYPE_BINARY_BOOL>(pool), + blrOp(aBlrOp), + dsqlArg1(aArg1), + dsqlArg2(aArg2), + arg1(NULL), + arg2(NULL) +{ + addChildNode(dsqlArg1, arg1); + addChildNode(dsqlArg2, arg2); +} + +DmlNode* BinaryBoolNode::parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb, UCHAR blrOp) +{ + BinaryBoolNode* node = FB_NEW(pool) BinaryBoolNode(pool, blrOp); + node->arg1 = PAR_parse_node(tdbb, csb, TYPE_BOOL); + node->arg2 = PAR_parse_node(tdbb, csb, TYPE_BOOL); + return node; +} + +void BinaryBoolNode::print(string& text, Array<dsql_nod*>& nodes) const +{ + text.printf("BinaryBoolNode (%d)", blrOp); + ExprNode::print(text, nodes); +} + +BoolExprNode* BinaryBoolNode::dsqlPass(DsqlCompilerScratch* dsqlScratch) +{ + return FB_NEW(getPool()) BinaryBoolNode(getPool(), blrOp, + PASS1_node(dsqlScratch, dsqlArg1), PASS1_node(dsqlScratch, dsqlArg2)); +} + +void BinaryBoolNode::genBlr(DsqlCompilerScratch* dsqlScratch) +{ + dsqlScratch->appendUChar(blrOp); + GEN_expr(dsqlScratch, dsqlArg1); + GEN_expr(dsqlScratch, dsqlArg2); +} + +bool BinaryBoolNode::dsqlMatch(const ExprNode* other, bool ignoreMapCast) const +{ + if (!BoolExprNode::dsqlMatch(other, ignoreMapCast)) + return false; + + const BinaryBoolNode* o = other->as<BinaryBoolNode>(); + fb_assert(o) + + return blrOp == o->blrOp; +} + +BoolExprNode* BinaryBoolNode::copy(thread_db* tdbb, NodeCopier& copier) +{ + BinaryBoolNode* node = FB_NEW(*tdbb->getDefaultPool()) BinaryBoolNode(*tdbb->getDefaultPool(), + blrOp); + node->arg1 = copier.copy(tdbb, arg1); + node->arg2 = copier.copy(tdbb, arg2); + return node; +} + +bool BinaryBoolNode::execute(thread_db* tdbb, jrd_req* request) const +{ + switch (blrOp) + { + case blr_and: + return executeAnd(tdbb, request); + + case blr_or: + return executeOr(tdbb, request); + } + + fb_assert(false); + return false; +} + +bool BinaryBoolNode::executeAnd(thread_db* tdbb, jrd_req* request) const +{ + // If either operand is false, then the result is false; + // If both are true, the result is true; + // Otherwise, the result is NULL. + // + // op 1 op 2 result + // ---- ---- ------ + // F F F + // F T F + // F N F + // T F F + // T T T + // T N N + // N F F + // N T N + // N N N + + const bool value1 = EVL_boolean(tdbb, arg1); + + // Save null state and get other operand. + const USHORT firstnull = request->req_flags & req_null; + request->req_flags &= ~req_null; + + if (!value1 && !firstnull) + { + // First term is false, why the whole expression is false. + // NULL flag is already turned off a few lines above. + return false; + } + + const bool value2 = EVL_boolean(tdbb, arg2); + const USHORT secondnull = request->req_flags & req_null; + request->req_flags &= ~req_null; + + if ((!value1 && !firstnull) || (!value2 && !secondnull)) + return false; // at least one operand was false + + if (value1 && value2) + return true; // both true + + // otherwise, return null + request->req_flags |= req_null; + return false; +} + +bool BinaryBoolNode::executeOr(thread_db* tdbb, jrd_req* request) const +{ + // If either operand is true, then the result is true; + // If both are false, the result is false; + // Otherwise, the result is NULL. + // + // op 1 op 2 result + // ---- ---- ------ + // F F F + // F T T + // F N N + // T F T + // T T T + // T N T + // N F N + // N T T + // N N N + // + // Also, preserve first operand's value and null state, but still + // evaluate second operand, since latter field mappings may + // depend on the evaluation. + + const bool value1 = EVL_boolean(tdbb, arg1); + + const ULONG flags = request->req_flags; + request->req_flags &= ~req_null; + + if (value1) + { + // First term is true, why the whole expression is true. + // NULL flag is already turned off a few lines above. + return true; + } + + const bool value2 = EVL_boolean(tdbb, arg2); + + if (value1 || value2) + { + request->req_flags &= ~req_null; + return true; + } + + // restore saved NULL state + + if (flags & req_null) + request->req_flags |= req_null; + + return false; +} + + +//-------------------- + + +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeEql(blr_eql); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeGeq(blr_geq); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeGtr(blr_gtr); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeLeq(blr_leq); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeLss(blr_lss); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeNeq(blr_neq); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeEquiv(blr_equiv); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeBetween(blr_between); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeLike(blr_like); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeAnsiLike(blr_ansi_like); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeContaining(blr_containing); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeStarting(blr_starting); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeSimilar(blr_similar); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeMatching(blr_matching); +static RegisterNode<ComparativeBoolNode> regComparativeBoolNodeMatching2(blr_matching2); // sleuth + +ComparativeBoolNode::ComparativeBoolNode(MemoryPool& pool, UCHAR aBlrOp, + dsql_nod* aArg1, dsql_nod* aArg2, dsql_nod* aArg3) + : TypedNode<BoolExprNode, ExprNode::TYPE_COMPARATIVE_BOOL>(pool), + blrOp(aBlrOp), + dsqlArg1(aArg1), + dsqlArg2(aArg2), + dsqlArg3(aArg3), + dsqlFlag(DFLAG_NONE), + arg1(NULL), + arg2(NULL), + arg3(NULL) +{ + addChildNode(dsqlArg1, arg1); + addChildNode(dsqlArg2, arg2); + addChildNode(dsqlArg3, arg3); +} + +DmlNode* ComparativeBoolNode::parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb, UCHAR blrOp) +{ + ComparativeBoolNode* node = FB_NEW(pool) ComparativeBoolNode(pool, blrOp); + + node->arg1 = PAR_parse_node(tdbb, csb, VALUE); + node->arg2 = PAR_parse_node(tdbb, csb, VALUE); + + if (blrOp == blr_between || blrOp == blr_ansi_like || blrOp == blr_matching2) + { + if (blrOp == blr_ansi_like) + blrOp = blr_like; + + node->arg3 = PAR_parse_node(tdbb, csb, VALUE); + } + else if (blrOp == blr_similar) + { + if (csb->csb_blr_reader.getByte() != 0) + node->arg3 = PAR_parse_node(tdbb, csb, VALUE); // escape + } + + return node; +} + +void ComparativeBoolNode::print(string& text, Array<dsql_nod*>& nodes) const +{ + text.printf("ComparativeBoolNode (%d)", blrOp); + ExprNode::print(text, nodes); +} + +BoolExprNode* ComparativeBoolNode::dsqlPass(DsqlCompilerScratch* dsqlScratch) +{ + switch (blrOp) + { + case blr_eql: + case blr_neq: + case blr_gtr: + case blr_geq: + case blr_lss: + case blr_leq: + if (dsqlArg2->nod_type == Dsql::nod_list) + { + int listItemCount = 0; + BoolExprNode* resultNode = NULL; + dsql_nod** ptr = dsqlArg2->nod_arg; + + for (const dsql_nod* const* const end = ptr + dsqlArg2->nod_count; + ptr != end; ++listItemCount, ++ptr) + { + if (listItemCount >= MAX_MEMBER_LIST) + { + ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-901) << + Arg::Gds(isc_imp_exc) << + Arg::Gds(isc_dsql_too_many_values) << Arg::Num(MAX_MEMBER_LIST)); + } + + DEV_BLKCHK(*ptr, dsql_type_nod); + + ComparativeBoolNode* temp = FB_NEW(getPool()) ComparativeBoolNode(getPool(), + blrOp, dsqlArg1, *ptr); + + if (resultNode) + { + dsql_nod* tempNod = MAKE_node(Dsql::nod_class_exprnode, 1); + tempNod->nod_arg[0] = reinterpret_cast<dsql_nod*>(temp); + + dsql_nod* resultNod = MAKE_node(Dsql::nod_class_exprnode, 1); + resultNod->nod_arg[0] = reinterpret_cast<dsql_nod*>(resultNode); + + BinaryBoolNode* binaryNode = FB_NEW(getPool()) BinaryBoolNode(getPool(), + blr_or, resultNod, tempNod); + + resultNode = binaryNode; + } + else + resultNode = temp; + } + + return resultNode->dsqlPass(dsqlScratch); + } + + if (dsqlArg2->nod_type == Dsql::nod_select_expr && + !(dsqlArg2->nod_flags & NOD_SELECT_EXPR_SINGLETON)) + { + UCHAR newBlrOp = blr_any; + + if (dsqlFlag == DFLAG_ANSI_ANY) + newBlrOp = blr_ansi_any; + else if (dsqlFlag == DFLAG_ANSI_ALL) + newBlrOp = blr_ansi_all; + + return createRseNode(dsqlScratch, newBlrOp); + } + + break; + } + + ComparativeBoolNode* node = FB_NEW(getPool()) ComparativeBoolNode(getPool(), blrOp, + PASS1_node(dsqlScratch, dsqlArg1), PASS1_node(dsqlScratch, dsqlArg2), + PASS1_node(dsqlScratch, dsqlArg3)); + + switch (blrOp) + { + case blr_eql: + case blr_neq: + case blr_gtr: + case blr_geq: + case blr_lss: + case blr_leq: + case blr_equiv: + case blr_between: + // Try to force arg1 to be same type as arg2 eg: ? = FIELD case + PASS1_set_parameter_type(dsqlScratch, node->dsqlArg1, node->dsqlArg2, false); + + // Try to force arg2 to be same type as arg1 eg: FIELD = ? case + // Try even when the above call succeeded, because "arg2" may + // have arg-expressions that should be resolved. + PASS1_set_parameter_type(dsqlScratch, node->dsqlArg2, node->dsqlArg1, false); + + // X BETWEEN Y AND ? case + if (!PASS1_set_parameter_type(dsqlScratch, node->dsqlArg3, node->dsqlArg1, false)) + { + // ? BETWEEN Y AND ? case + PASS1_set_parameter_type(dsqlScratch, node->dsqlArg3, node->dsqlArg2, false); + } + break; + + case blr_containing: + case blr_like: + case blr_similar: + case blr_starting: + // Try to force arg1 to be same type as arg2 eg: ? LIKE FIELD case + PASS1_set_parameter_type(dsqlScratch, node->dsqlArg1, node->dsqlArg2, true); + + // Try to force arg2 same type as arg 1 eg: FIELD LIKE ? case + // Try even when the above call succeeded, because "arg2" may + // have arg-expressions that should be resolved. + PASS1_set_parameter_type(dsqlScratch, node->dsqlArg2, node->dsqlArg1, true); + + // X LIKE Y ESCAPE ? case + PASS1_set_parameter_type(dsqlScratch, node->dsqlArg3, node->dsqlArg2, true); + } + + return node; +} + +void ComparativeBoolNode::genBlr(DsqlCompilerScratch* dsqlScratch) +{ + dsqlScratch->appendUChar(blrOp == blr_like && dsqlArg3 ? blr_ansi_like : blrOp); + + GEN_expr(dsqlScratch, dsqlArg1); + GEN_expr(dsqlScratch, dsqlArg2); + + if (blrOp == blr_similar) + dsqlScratch->appendUChar(dsqlArg3 ? 1 : 0); + + if (dsqlArg3) + GEN_expr(dsqlScratch, dsqlArg3); +} + +bool ComparativeBoolNode::dsqlMatch(const ExprNode* other, bool ignoreMapCast) const +{ + if (!BoolExprNode::dsqlMatch(other, ignoreMapCast)) + return false; + + const ComparativeBoolNode* o = other->as<ComparativeBoolNode>(); + fb_assert(o) + + return dsqlFlag == o->dsqlFlag && blrOp == o->blrOp; +} + +BoolExprNode* ComparativeBoolNode::copy(thread_db* tdbb, NodeCopier& copier) +{ + ComparativeBoolNode* node = FB_NEW(*tdbb->getDefaultPool()) ComparativeBoolNode( + *tdbb->getDefaultPool(), blrOp); + node->arg1 = copier.copy(tdbb, arg1); + node->arg2 = copier.copy(tdbb, arg2); + + if (arg3) + node->arg3 = copier.copy(tdbb, arg3); + + return node; +} + +ExprNode* ComparativeBoolNode::pass1(thread_db* tdbb, CompilerScratch* csb) +{ + bool invariantCheck = false; + + switch (blrOp) + { + case blr_eql: + case blr_equiv: + case blr_gtr: + case blr_geq: + case blr_lss: + case blr_leq: + case blr_neq: + case blr_between: + node->nod_flags |= nod_comparison; + break; + + case blr_like: + case blr_similar: + case blr_containing: + case blr_starting: + invariantCheck = true; + break; + } + + arg1 = CMP_pass1(tdbb, csb, arg1); + + if (invariantCheck) + { + // We need to take care of invariantness expressions to be able to pre-compile the pattern. + node->nod_flags |= nod_invariant; + csb->csb_current_nodes.push(node.getObject()); + } + + arg2 = CMP_pass1(tdbb, csb, arg2); + + if (arg3) + arg3 = CMP_pass1(tdbb, csb, arg3); + + if (invariantCheck) + { + csb->csb_current_nodes.pop(); + + // If there is no top-level RSE present and patterns are not constant, unmark node as invariant + // because it may be dependent on data or variables. + if ((node->nod_flags & nod_invariant) && + (arg2->nod_type != nod_literal || (arg3 && arg3->nod_type != nod_literal))) + { + const LegacyNodeOrRseNode* ctx_node, *end; + for (ctx_node = csb->csb_current_nodes.begin(), end = csb->csb_current_nodes.end(); + ctx_node != end; ++ctx_node) + { + if (ctx_node->rseNode) + break; + } + + if (ctx_node >= end) + node->nod_flags &= ~nod_invariant; + } + } + + return this; +} + +ExprNode* ComparativeBoolNode::pass2(thread_db* tdbb, CompilerScratch* csb) +{ + if (node->nod_flags & nod_invariant) + csb->csb_invariants.push(node); + + ExprNode::pass2(tdbb, csb); + + if (arg3) + { + if (arg3->nod_flags & nod_agg_dbkey) + ERR_post(Arg::Gds(isc_bad_dbkey)); + + dsc descriptor_c; + CMP_get_desc(tdbb, csb, arg1, &descriptor_c); + + if (DTYPE_IS_DATE(descriptor_c.dsc_dtype)) + { + arg1->nod_flags |= nod_date; + arg2->nod_flags |= nod_date; + } + } + + if ((arg1->nod_flags & nod_agg_dbkey) || (arg2->nod_flags & nod_agg_dbkey)) + ERR_post(Arg::Gds(isc_bad_dbkey)); + + dsc descriptor_a, descriptor_b; + CMP_get_desc(tdbb, csb, arg1, &descriptor_a); + CMP_get_desc(tdbb, csb, arg2, &descriptor_b); + + if (DTYPE_IS_DATE(descriptor_a.dsc_dtype)) + arg2->nod_flags |= nod_date; + else if (DTYPE_IS_DATE(descriptor_b.dsc_dtype)) + arg1->nod_flags |= nod_date; + + if (node->nod_flags & nod_invariant) + { + // This may currently happen for nod_like, nod_contains and nod_similar + csb->csb_impure += sizeof(impure_value); + } + + return this; +} + +bool ComparativeBoolNode::execute(thread_db* tdbb, jrd_req* request) const +{ + dsc* desc[2] = {NULL, NULL}; + SSHORT comparison; + bool computed_invariant = false; + + request->req_flags &= ~req_same_tx_upd; + SSHORT force_equal = 0; + + // Evaluate arguments. If either is null, result is null, but in + // any case, evaluate both, since some expressions may later depend + // on mappings which are developed here + + const jrd_nod* rec_version = arg1; + desc[0] = EVL_expr(tdbb, arg1); + const ULONG flags = request->req_flags; + request->req_flags &= ~req_null; + force_equal |= request->req_flags & req_same_tx_upd; + + // Currently only nod_like, nod_contains, nod_starts and nod_similar may be marked invariant + if (node->nod_flags & nod_invariant) + { + impure_value* impure = request->getImpure<impure_value>(node->nod_impure); + + // Check that data type of operand is still the same. + // It may change due to multiple formats present in stream + // System tables are the good example of such streams - + // data coming from ini.epp has ASCII ttype, user data is UNICODE_FSS + // + // Note that value descriptor may be NULL pointer if value is SQL NULL + if ((impure->vlu_flags & VLU_computed) && desc[0] && + (impure->vlu_desc.dsc_dtype != desc[0]->dsc_dtype || + impure->vlu_desc.dsc_sub_type != desc[0]->dsc_sub_type || + impure->vlu_desc.dsc_scale != desc[0]->dsc_scale)) + { + impure->vlu_flags &= ~VLU_computed; + } + + if (impure->vlu_flags & VLU_computed) + { + if (impure->vlu_flags & VLU_null) + request->req_flags |= req_null; + else + computed_invariant = true; + } + else + { + desc[1] = EVL_expr(tdbb, arg2); + + if (request->req_flags & req_null) + { + impure->vlu_flags |= VLU_computed; + impure->vlu_flags |= VLU_null; + } + else + { + impure->vlu_flags &= ~VLU_null; + + // Search object depends on operand data type. + // Thus save data type which we use to compute invariant + if (desc[0]) + { + impure->vlu_desc.dsc_dtype = desc[0]->dsc_dtype; + impure->vlu_desc.dsc_sub_type = desc[0]->dsc_sub_type; + impure->vlu_desc.dsc_scale = desc[0]->dsc_scale; + } + else + { + // Indicate we do not know type of expression. + // This code will force pattern recompile for the next non-null value + impure->vlu_desc.dsc_dtype = 0; + impure->vlu_desc.dsc_sub_type = 0; + impure->vlu_desc.dsc_scale = 0; + } + } + } + } + else + desc[1] = EVL_expr(tdbb, arg2); + + // An equivalence operator evaluates to true when both operands + // are NULL and behaves like an equality operator otherwise. + // Note that this operator never sets req_null flag + + if (blrOp == blr_equiv) + { + if ((flags & req_null) && (request->req_flags & req_null)) + { + request->req_flags &= ~req_null; + return true; + } + + if ((flags & req_null) || (request->req_flags & req_null)) + { + request->req_flags &= ~req_null; + return false; + } + } + + // If either of expressions above returned NULL set req_null flag + // and return false + + if (flags & req_null) + request->req_flags |= req_null; + + if (request->req_flags & req_null) + return false; + + force_equal |= request->req_flags & req_same_tx_upd; + + if (node->nod_flags & nod_comparison) + comparison = MOV_compare(desc[0], desc[1]); + + // If we are checking equality of record_version + // and same transaction updated the record, force equality. + + if (rec_version->nod_type == nod_rec_version && force_equal) + comparison = 0; + + request->req_flags &= ~(req_null | req_same_tx_upd); + + switch (blrOp) + { + case blr_eql: + case blr_equiv: + return comparison == 0; + + case blr_gtr: + return comparison > 0; + + case blr_geq: + return comparison >= 0; + + case blr_lss: + return comparison < 0; + + case blr_leq: + return comparison <= 0; + + case blr_neq: + return comparison != 0; + + case blr_between: + desc[1] = EVL_expr(tdbb, arg3); + if (request->req_flags & req_null) + return false; + return comparison >= 0 && MOV_compare(desc[0], desc[1]) <= 0; + + case blr_containing: + case blr_starting: + case blr_matching: + case blr_like: + case blr_similar: + return stringBoolean(tdbb, request, desc[0], desc[1], computed_invariant); + + case blr_matching2: + return sleuth(tdbb, request, desc[0], desc[1]); + } + + return false; +} + +// Perform one of the complex string functions CONTAINING, MATCHES, or STARTS WITH. +bool ComparativeBoolNode::stringBoolean(thread_db* tdbb, jrd_req* request, dsc* desc1, + dsc* desc2, bool computed_invariant) const +{ + UCHAR* p1 = NULL; + UCHAR* p2 = NULL; + SLONG l2 = 0; + USHORT type1; + MoveBuffer match_str; + + SET_TDBB(tdbb); + + if (!desc1->isBlob()) + { + // Source is not a blob, do a simple search + + // Get text type of data string + + type1 = INTL_TEXT_TYPE(*desc1); + + // Get address and length of search string - convert to datatype of data + + if (!computed_invariant) + l2 = MOV_make_string2(tdbb, desc2, type1, &p2, match_str); + + VaryStr<256> temp1; + USHORT xtype1; + const USHORT l1 = MOV_get_string_ptr(desc1, &xtype1, &p1, &temp1, sizeof(temp1)); + + fb_assert(xtype1 == type1); + + return stringFunction(tdbb, request, l1, p1, l2, p2, type1, computed_invariant); + } + + // Source string is a blob, things get interesting + + HalfStaticArray<UCHAR, BUFFER_SMALL> buffer; + + if (desc1->dsc_sub_type == isc_blob_text) + type1 = desc1->dsc_blob_ttype(); // pick up character set and collation of blob + else + type1 = ttype_none; // Do byte matching + + Collation* obj = INTL_texttype_lookup(tdbb, type1); + CharSet* charset = obj->getCharSet(); + + // Get address and length of search string - make it string if necessary + // but don't transliterate character set if the source blob is binary + VaryStr<256> temp2; + if (!computed_invariant) + { + if (type1 == ttype_none) + l2 = MOV_get_string(desc2, &p2, &temp2, sizeof(temp2)); + else + l2 = MOV_make_string2(tdbb, desc2, type1, &p2, match_str); + } + + blb* blob = BLB_open(tdbb, request->req_transaction, reinterpret_cast<bid*>(desc1->dsc_address)); + + if (charset->isMultiByte() && + (blrOp != blr_starting || !(obj->getFlags() & TEXTTYPE_DIRECT_MATCH))) + { + buffer.getBuffer(blob->blb_length); // alloc space to put entire blob in memory + } + + // Performs the string_function on each segment of the blob until + // a positive result is obtained + + bool ret_val = false; + + switch (blrOp) + { + case blr_like: + case blr_similar: + { + VaryStr<TEMP_LENGTH> temp3; + const UCHAR* escape_str = NULL; + USHORT escape_length = 0; + + // ensure 3rd argument (escape char) is in operation text type + if (arg3 && !computed_invariant) + { + // Convert ESCAPE to operation character set + dsc* desc = EVL_expr(tdbb, arg3); + + if (request->req_flags & req_null) + { + if (node->nod_flags & nod_invariant) + { + impure_value* impure = request->getImpure<impure_value>(node->nod_impure); + impure->vlu_flags |= VLU_computed; + impure->vlu_flags |= VLU_null; + } + ret_val = false; + break; + } + + escape_length = MOV_make_string(desc, type1, + reinterpret_cast<const char**>(&escape_str), &temp3, sizeof(temp3)); + + if (!escape_length || charset->length(escape_length, escape_str, true) != 1) + { + // If characters left, or null byte character, return error + BLB_close(tdbb, blob); + ERR_post(Arg::Gds(isc_escape_invalid)); + } + + USHORT escape[2] = {0, 0}; + + charset->getConvToUnicode().convert(escape_length, escape_str, sizeof(escape), escape); + if (!escape[0]) + { + // If or null byte character, return error + BLB_close(tdbb, blob); + ERR_post(Arg::Gds(isc_escape_invalid)); + } + } + + PatternMatcher* evaluator; + + if (node->nod_flags & nod_invariant) + { + impure_value* impure = request->getImpure<impure_value>(node->nod_impure); + + if (!(impure->vlu_flags & VLU_computed)) + { + delete impure->vlu_misc.vlu_invariant; + impure->vlu_flags |= VLU_computed; + + if (blrOp == blr_like) + { + impure->vlu_misc.vlu_invariant = evaluator = obj->createLikeMatcher( + *tdbb->getDefaultPool(), p2, l2, escape_str, escape_length); + } + else // nod_similar + { + impure->vlu_misc.vlu_invariant = evaluator = obj->createSimilarToMatcher( + *tdbb->getDefaultPool(), p2, l2, escape_str, escape_length, false); + } + } + else + { + evaluator = impure->vlu_misc.vlu_invariant; + evaluator->reset(); + } + } + else if (blrOp == blr_like) + { + evaluator = obj->createLikeMatcher(*tdbb->getDefaultPool(), + p2, l2, escape_str, escape_length); + } + else // nod_similar + { + evaluator = obj->createSimilarToMatcher(*tdbb->getDefaultPool(), + p2, l2, escape_str, escape_length, false); + } + + while (!(blob->blb_flags & BLB_eof)) + { + const SLONG l1 = BLB_get_data(tdbb, blob, buffer.begin(), buffer.getCapacity(), false); + if (!evaluator->process(buffer.begin(), l1)) + break; + } + + ret_val = evaluator->result(); + + if (!(node->nod_flags & nod_invariant)) + delete evaluator; + + break; + } + + case blr_containing: + case blr_starting: + { + PatternMatcher* evaluator; + + if (node->nod_flags & nod_invariant) + { + impure_value* impure = request->getImpure<impure_value>(node->nod_impure); + if (!(impure->vlu_flags & VLU_computed)) + { + delete impure->vlu_misc.vlu_invariant; + + if (blrOp == blr_containing) + { + impure->vlu_misc.vlu_invariant = evaluator = + obj->createContainsMatcher(*tdbb->getDefaultPool(), p2, l2); + } + else // nod_starts + { + impure->vlu_misc.vlu_invariant = evaluator = + obj->createStartsMatcher(*tdbb->getDefaultPool(), p2, l2); + } + + impure->vlu_flags |= VLU_computed; + } + else + { + evaluator = impure->vlu_misc.vlu_invariant; + evaluator->reset(); + } + } + else + { + if (blrOp == blr_containing) + evaluator = obj->createContainsMatcher(*tdbb->getDefaultPool(), p2, l2); + else // nod_starts + evaluator = obj->createStartsMatcher(*tdbb->getDefaultPool(), p2, l2); + } + + while (!(blob->blb_flags & BLB_eof)) + { + const SLONG l1 = BLB_get_data(tdbb, blob, buffer.begin(), buffer.getCapacity(), false); + if (!evaluator->process(buffer.begin(), l1)) + break; + } + + ret_val = evaluator->result(); + + if (!(node->nod_flags & nod_invariant)) + delete evaluator; + + break; + } + } + + BLB_close(tdbb, blob); + + return ret_val; +} + +// Perform one of the pattern matching string functions. +bool ComparativeBoolNode::stringFunction(thread_db* tdbb, jrd_req* request, + SLONG l1, const UCHAR* p1, SLONG l2, const UCHAR* p2, USHORT ttype, + bool computed_invariant) const +{ + SET_TDBB(tdbb); + + Collation* obj = INTL_texttype_lookup(tdbb, ttype); + CharSet* charset = obj->getCharSet(); + + // Handle contains and starts + if (blrOp == blr_containing || blrOp == blr_starting) + { + if (node->nod_flags & nod_invariant) + { + impure_value* impure = request->getImpure<impure_value>(node->nod_impure); + PatternMatcher* evaluator; + if (!(impure->vlu_flags & VLU_computed)) + { + delete impure->vlu_misc.vlu_invariant; + + if (blrOp == blr_containing) + { + impure->vlu_misc.vlu_invariant = evaluator = + obj->createContainsMatcher(*tdbb->getDefaultPool(), p2, l2); + } + else + { + // nod_starts + impure->vlu_misc.vlu_invariant = evaluator = + obj->createStartsMatcher(*tdbb->getDefaultPool(), p2, l2); + } + + impure->vlu_flags |= VLU_computed; + } + else + { + evaluator = impure->vlu_misc.vlu_invariant; + evaluator->reset(); + } + + evaluator->process(p1, l1); + return evaluator->result(); + } + + if (blrOp == blr_containing) + return obj->contains(*tdbb->getDefaultPool(), p1, l1, p2, l2); + + // nod_starts + return obj->starts(*tdbb->getDefaultPool(), p1, l1, p2, l2); + } + + // Handle LIKE and SIMILAR + if (blrOp == blr_like || blrOp == blr_similar) + { + VaryStr<TEMP_LENGTH> temp3; + const UCHAR* escape_str = NULL; + USHORT escape_length = 0; + // ensure 3rd argument (escape char) is in operation text type + if (arg3 && !computed_invariant) + { + // Convert ESCAPE to operation character set + dsc* desc = EVL_expr(tdbb, arg3); + if (request->req_flags & req_null) + { + if (node->nod_flags & nod_invariant) + { + impure_value* impure = request->getImpure<impure_value>(node->nod_impure); + impure->vlu_flags |= VLU_computed; + impure->vlu_flags |= VLU_null; + } + return false; + } + + escape_length = MOV_make_string(desc, ttype, + reinterpret_cast<const char**>(&escape_str), &temp3, sizeof(temp3)); + + if (!escape_length || charset->length(escape_length, escape_str, true) != 1) + { + // If characters left, or null byte character, return error + ERR_post(Arg::Gds(isc_escape_invalid)); + } + + USHORT escape[2] = {0, 0}; + + charset->getConvToUnicode().convert(escape_length, escape_str, sizeof(escape), escape); + + if (!escape[0]) + { + // If or null byte character, return error + ERR_post(Arg::Gds(isc_escape_invalid)); + } + } + + if (node->nod_flags & nod_invariant) + { + impure_value* impure = request->getImpure<impure_value>(node->nod_impure); + PatternMatcher* evaluator; + + if (!(impure->vlu_flags & VLU_computed)) + { + delete impure->vlu_misc.vlu_invariant; + impure->vlu_flags |= VLU_computed; + + if (blrOp == blr_like) + { + impure->vlu_misc.vlu_invariant = evaluator = obj->createLikeMatcher( + *tdbb->getDefaultPool(), p2, l2, escape_str, escape_length); + } + else // nod_similar + { + impure->vlu_misc.vlu_invariant = evaluator = obj->createSimilarToMatcher( + *tdbb->getDefaultPool(), p2, l2, escape_str, escape_length, false); + } + } + else + { + evaluator = impure->vlu_misc.vlu_invariant; + evaluator->reset(); + } + + evaluator->process(p1, l1); + + return evaluator->result(); + } + + if (blrOp == blr_like) + return obj->like(*tdbb->getDefaultPool(), p1, l1, p2, l2, escape_str, escape_length); + + // nod_similar + return obj->similarTo(*tdbb->getDefaultPool(), p1, l1, p2, l2, escape_str, + escape_length, false); + } + + // Handle MATCHES + return obj->matches(*tdbb->getDefaultPool(), p1, l1, p2, l2); +} + +// Execute SLEUTH operator. +bool ComparativeBoolNode::sleuth(thread_db* tdbb, jrd_req* request, const dsc* desc1, + const dsc* desc2) const +{ + SET_TDBB(tdbb); + + // Choose interpretation for the operation + + USHORT ttype; + if (desc1->isBlob()) + { + if (desc1->dsc_sub_type == isc_blob_text) + ttype = desc1->dsc_blob_ttype(); // Load blob character set and collation + else + ttype = INTL_TTYPE(desc2); + } + else + ttype = INTL_TTYPE(desc1); + + Collation* obj = INTL_texttype_lookup(tdbb, ttype); + + // Get operator definition string (control string) + + dsc* desc3 = EVL_expr(tdbb, arg3); + + UCHAR* p1; + MoveBuffer sleuth_str; + USHORT l1 = MOV_make_string2(tdbb, desc3, ttype, &p1, sleuth_str); + // Get address and length of search string + UCHAR* p2; + MoveBuffer match_str; + USHORT l2 = MOV_make_string2(tdbb, desc2, ttype, &p2, match_str); + + // Merge search and control strings + UCHAR control[BUFFER_SMALL]; + SLONG control_length = obj->sleuthMerge(*tdbb->getDefaultPool(), p2, l2, p1, l1, control); //, BUFFER_SMALL); + + // Note: resulting string from sleuthMerge is either USHORT or UCHAR + // and never Multibyte (see note in EVL_mb_sleuthCheck) + bool ret_val; + MoveBuffer data_str; + if (!desc1->isBlob()) + { + // Source is not a blob, do a simple search + + l1 = MOV_make_string2(tdbb, desc1, ttype, &p1, data_str); + ret_val = obj->sleuthCheck(*tdbb->getDefaultPool(), 0, p1, l1, control, control_length); + } + else + { + // Source string is a blob, things get interesting + + blb* blob = BLB_open(tdbb, request->req_transaction, + reinterpret_cast<bid*>(desc1->dsc_address)); + + UCHAR buffer[BUFFER_LARGE]; + ret_val = false; + + while (!(blob->blb_flags & BLB_eof)) + { + l1 = BLB_get_segment(tdbb, blob, buffer, sizeof(buffer)); + if (obj->sleuthCheck(*tdbb->getDefaultPool(), 0, buffer, l1, control, control_length)) + { + ret_val = true; + break; + } + } + + BLB_close(tdbb, blob); + } + + return ret_val; +} + +BoolExprNode* ComparativeBoolNode::createRseNode(DsqlCompilerScratch* dsqlScratch, UCHAR rseBlrOp) +{ + PASS1_set_parameter_type(dsqlScratch, dsqlArg1, dsqlArg2, false); + + // create a derived table representing our subquery + dsql_nod* dt = MAKE_node(Dsql::nod_derived_table, Dsql::e_derived_table_count); + // Ignore validation for columnames that must exist for "user" derived tables. + dt->nod_flags |= NOD_DT_IGNORE_COLUMN_CHECK; + dt->nod_arg[Dsql::e_derived_table_rse] = dsqlArg2; + dsql_nod* from = MAKE_node(Dsql::nod_list, 1); + from->nod_arg[0] = dt; + dsql_nod* query_spec = MAKE_node(Dsql::nod_query_spec, Dsql::e_qry_count); + query_spec->nod_arg[Dsql::e_qry_from] = from; + dsql_nod* select_expr = MAKE_node(Dsql::nod_select_expr, Dsql::e_sel_count); + select_expr->nod_arg[Dsql::e_sel_query_spec] = query_spec; + + const DsqlContextStack::iterator base(*dsqlScratch->context); + const DsqlContextStack::iterator baseDT(dsqlScratch->derivedContext); + const DsqlContextStack::iterator baseUnion(dsqlScratch->unionContext); + + dsql_nod* rse = PASS1_rse(dsqlScratch, select_expr, NULL); + + // create a conjunct to be injected + + ComparativeBoolNode* cmpNode = FB_NEW(getPool()) ComparativeBoolNode(getPool(), blrOp, + PASS1_node_psql(dsqlScratch, dsqlArg1, false), rse->nod_arg[Dsql::e_rse_items]->nod_arg[0]); + + dsql_nod* temp = MAKE_node(Dsql::nod_class_exprnode, 1); + temp->nod_arg[0] = reinterpret_cast<dsql_nod*>(cmpNode); + rse->nod_arg[Dsql::e_rse_boolean] = temp; + + // create output node + + RseBoolNode* rseNode = FB_NEW(getPool()) RseBoolNode(getPool(), rseBlrOp, rse); + + // Finish off by cleaning up contexts + dsqlScratch->unionContext.clear(baseUnion); + dsqlScratch->derivedContext.clear(baseDT); + dsqlScratch->context->clear(base); + + return rseNode; +} + + +//-------------------- + + +static RegisterNode<MissingBoolNode> regMissingBoolNode(blr_missing); + +MissingBoolNode::MissingBoolNode(MemoryPool& pool, dsql_nod* aArg) + : TypedNode<BoolExprNode, ExprNode::TYPE_MISSING_BOOL>(pool), + dsqlArg(aArg), + arg(NULL) +{ + addChildNode(dsqlArg, arg); +} + +DmlNode* MissingBoolNode::parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb, UCHAR /*blrOp*/) +{ + MissingBoolNode* node = FB_NEW(pool) MissingBoolNode(pool); + node->arg = PAR_parse_node(tdbb, csb, TYPE_BOOL); + return node; +} + +void MissingBoolNode::print(string& text, Array<dsql_nod*>& nodes) const +{ + text = "MissingBoolNode"; + ExprNode::print(text, nodes); +} + +BoolExprNode* MissingBoolNode::dsqlPass(DsqlCompilerScratch* dsqlScratch) +{ + MissingBoolNode* node = FB_NEW(getPool()) MissingBoolNode(getPool(), + PASS1_node(dsqlScratch, dsqlArg)); + + PASS1_set_parameter_type(dsqlScratch, node->dsqlArg, NULL, false); + + return node; +} + +void MissingBoolNode::genBlr(DsqlCompilerScratch* dsqlScratch) +{ + dsqlScratch->appendUChar(blr_missing); + GEN_expr(dsqlScratch, dsqlArg); +} + +BoolExprNode* MissingBoolNode::copy(thread_db* tdbb, NodeCopier& copier) +{ + MissingBoolNode* node = FB_NEW(*tdbb->getDefaultPool()) MissingBoolNode( + *tdbb->getDefaultPool()); + node->arg = copier.copy(tdbb, arg); + return node; +} + +ExprNode* MissingBoolNode::pass1(thread_db* tdbb, CompilerScratch* csb) +{ + return BoolExprNode::pass1(tdbb, csb); +} + +ExprNode* MissingBoolNode::pass2(thread_db* tdbb, CompilerScratch* csb) +{ + if (arg->nod_flags & nod_agg_dbkey) + ERR_post(Arg::Gds(isc_bad_dbkey)); + + // check for syntax errors in the calculation + dsc descriptor_a; + CMP_get_desc(tdbb, csb, arg, &descriptor_a); + + return BoolExprNode::pass2(tdbb, csb); +} + +bool MissingBoolNode::execute(thread_db* tdbb, jrd_req* request) const +{ + EVL_expr(tdbb, arg); + + if (request->req_flags & req_null) + { + request->req_flags &= ~req_null; + return true; + } + else + return false; +} + + +//-------------------- + + +static RegisterNode<NotBoolNode> regNotBoolNode(blr_not); + +NotBoolNode::NotBoolNode(MemoryPool& pool, dsql_nod* aArg) + : TypedNode<BoolExprNode, ExprNode::TYPE_NOT_BOOL>(pool), + dsqlArg(aArg), + arg(NULL) +{ + addChildNode(dsqlArg, arg); +} + +DmlNode* NotBoolNode::parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb, UCHAR /*blrOp*/) +{ + NotBoolNode* node = FB_NEW(pool) NotBoolNode(pool); + node->arg = PAR_parse_node(tdbb, csb, TYPE_BOOL); + return node; +} + +void NotBoolNode::print(string& text, Array<dsql_nod*>& nodes) const +{ + text = "NotBoolNode"; + ExprNode::print(text, nodes); +} + +BoolExprNode* NotBoolNode::dsqlPass(DsqlCompilerScratch* dsqlScratch) +{ + return process(dsqlScratch, true); +} + +void NotBoolNode::genBlr(DsqlCompilerScratch* dsqlScratch) +{ + dsqlScratch->appendUChar(blr_not); + GEN_expr(dsqlScratch, dsqlArg); +} + +BoolExprNode* NotBoolNode::copy(thread_db* tdbb, NodeCopier& copier) +{ + NotBoolNode* node = FB_NEW(*tdbb->getDefaultPool()) NotBoolNode(*tdbb->getDefaultPool()); + node->arg = copier.copy(tdbb, arg); + return node; +} + +ExprNode* NotBoolNode::pass1(thread_db* tdbb, CompilerScratch* csb) +{ + RseBoolNode* rseBoolean = ExprNode::as<RseBoolNode>(arg.getObject()); + + if (rseBoolean && rseBoolean->getNode()) + { + if (rseBoolean->blrOp == blr_ansi_any) + rseBoolean->getNode()->nod_flags |= nod_deoptimize; + if (rseBoolean->blrOp == blr_ansi_any || rseBoolean->blrOp == blr_ansi_all) + rseBoolean->getNode()->nod_flags |= nod_ansi_not; + } + + return BoolExprNode::pass1(tdbb, csb); +} + +bool NotBoolNode::execute(thread_db* tdbb, jrd_req* request) const +{ + bool value = EVL_boolean(tdbb, arg); + + if (request->req_flags & req_null) + return false; + + return !value; +} + +// Replace NOT with an appropriately inverted condition, if possible. +// Get rid of redundant nested NOT predicates. +BoolExprNode* NotBoolNode::process(DsqlCo... [truncated message content] |
From: <fir...@us...> - 2010-09-18 03:13:30
|
Revision: 51568 http://firebird.svn.sourceforge.net/firebird/?rev=51568&view=rev Author: firebirds Date: 2010-09-18 03:13:24 +0000 (Sat, 18 Sep 2010) 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 2010-09-17 14:42:11 UTC (rev 51567) +++ firebird/trunk/ChangeLog 2010-09-18 03:13:24 UTC (rev 51568) @@ -1,3 +1,60 @@ + 2010-09-17 14:42 asfernandes + M src/dsql/DdlNodes.epp +Fix problem with view WITH CHECK OPTION present since the introduction of ExprNode + + 2010-09-17 03:15 asfernandes + M builds/posix/make.shared.variables + M builds/win32/msvc10/dsql_server.vcxproj + M builds/win32/msvc10/dsql_server.vcxproj.filters + M builds/win32/msvc10/dsql_server_classic.vcxproj + M builds/win32/msvc10/dsql_server_classic.vcxproj.filters + M builds/win32/msvc9/dsql_server.vcproj + M builds/win32/msvc9/dsql_server_classic.vcproj + M src/dsql/AggNodes.cpp + M src/dsql/AggNodes.h + A src/dsql/BoolNodes.cpp + A src/dsql/BoolNodes.h + M src/dsql/DdlNodes.epp + M src/dsql/DdlNodes.h + M src/dsql/DsqlCompilerScratch.cpp + M src/dsql/DsqlCompilerScratch.h + M src/dsql/ExprNodes.cpp + M src/dsql/ExprNodes.h + M src/dsql/Nodes.h + M src/dsql/PackageNodes.epp + M src/dsql/PackageNodes.h + M src/dsql/Parser.h + M src/dsql/StmtNodes.cpp + M src/dsql/StmtNodes.h + M src/dsql/Visitors.h + M src/dsql/WinNodes.cpp + M src/dsql/WinNodes.h + M src/dsql/btyacc_fb.ske + M src/dsql/ddl.cpp + M src/dsql/dsql.cpp + M src/dsql/dsql.h + M src/dsql/gen.cpp + M src/dsql/keywords.cpp + M src/dsql/make.cpp + M src/dsql/node.h + M src/dsql/parse.y + M src/dsql/pass1.cpp + M src/dsql/pass1_proto.h + M src/jrd/Optimizer.cpp + M src/jrd/Optimizer.h + M src/jrd/RecordSourceNodes.cpp + M src/jrd/cmp.cpp + M src/jrd/cmp_proto.h + M src/jrd/evl.cpp + M src/jrd/exe.h + M src/jrd/nod.h + M src/jrd/opt.cpp + M src/jrd/par.cpp + M src/jrd/recsrc/FilteredStream.cpp + M src/misc/blrtable.cpp +1) Refactor all types of boolean nodes. +2) Remove the scratch from the nodes. + 2010-09-14 07:06 alexpeshkoff M doc/README.UserSql Fixed documentation Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-09-17 14:42:11 UTC (rev 51567) +++ firebird/trunk/src/jrd/build_no.h 2010-09-18 03:13:24 UTC (rev 51568) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28720 + FORMAL BUILD NUMBER:28722 */ -#define PRODUCT_VER_STRING "3.0.0.28720" -#define FILE_VER_STRING "WI-T3.0.0.28720" -#define LICENSE_VER_STRING "WI-T3.0.0.28720" -#define FILE_VER_NUMBER 3, 0, 0, 28720 +#define PRODUCT_VER_STRING "3.0.0.28722" +#define FILE_VER_STRING "WI-T3.0.0.28722" +#define LICENSE_VER_STRING "WI-T3.0.0.28722" +#define FILE_VER_NUMBER 3, 0, 0, 28722 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28720" +#define FB_BUILD_NO "28722" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-09-17 14:42:11 UTC (rev 51567) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-09-18 03:13:24 UTC (rev 51568) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28720 +BuildNum=28722 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-09-19 03:13:25
|
Revision: 51575 http://firebird.svn.sourceforge.net/firebird/?rev=51575&view=rev Author: firebirds Date: 2010-09-19 03:13:18 +0000 (Sun, 19 Sep 2010) 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 2010-09-18 21:07:07 UTC (rev 51574) +++ firebird/trunk/ChangeLog 2010-09-19 03:13:18 UTC (rev 51575) @@ -1,3 +1,20 @@ + 2010-09-18 18:19 asfernandes + M src/dsql/parse.y +Simplificate repetitive code + + 2010-09-18 18:18 asfernandes + M src/dsql/BoolNodes.cpp +Correction + + 2010-09-18 15:56 asfernandes + M src/dsql/BoolNodes.cpp + M src/dsql/DdlNodes.epp +Misc + + 2010-09-18 06:52 dimitr + M src/jrd/vio.cpp +Fixed CORE-3137: Partial rollback is possible for a selectable procedure modifying data. + 2010-09-17 14:42 asfernandes M src/dsql/DdlNodes.epp Fix problem with view WITH CHECK OPTION present since the introduction of ExprNode Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-09-18 21:07:07 UTC (rev 51574) +++ firebird/trunk/src/jrd/build_no.h 2010-09-19 03:13:18 UTC (rev 51575) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28722 + FORMAL BUILD NUMBER:28726 */ -#define PRODUCT_VER_STRING "3.0.0.28722" -#define FILE_VER_STRING "WI-T3.0.0.28722" -#define LICENSE_VER_STRING "WI-T3.0.0.28722" -#define FILE_VER_NUMBER 3, 0, 0, 28722 +#define PRODUCT_VER_STRING "3.0.0.28726" +#define FILE_VER_STRING "WI-T3.0.0.28726" +#define LICENSE_VER_STRING "WI-T3.0.0.28726" +#define FILE_VER_NUMBER 3, 0, 0, 28726 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28722" +#define FB_BUILD_NO "28726" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-09-18 21:07:07 UTC (rev 51574) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-09-19 03:13:18 UTC (rev 51575) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28722 +BuildNum=28726 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-09-21 03:14:30
|
Revision: 51581 http://firebird.svn.sourceforge.net/firebird/?rev=51581&view=rev Author: firebirds Date: 2010-09-21 03:14:24 +0000 (Tue, 21 Sep 2010) 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 2010-09-20 16:26:25 UTC (rev 51580) +++ firebird/trunk/ChangeLog 2010-09-21 03:14:24 UTC (rev 51581) @@ -1,3 +1,53 @@ + 2010-09-20 16:26 asfernandes + M src/jrd/cmp.cpp + M src/jrd/nod.h +Misc + + 2010-09-20 16:07 asfernandes + M src/dsql/BoolNodes.cpp + M src/dsql/BoolNodes.h + M src/dsql/ExprNodes.cpp + M src/dsql/ExprNodes.h + M src/dsql/Nodes.h + M src/dsql/StmtNodes.cpp + M src/dsql/StmtNodes.h + M src/dsql/Visitors.h + M src/dsql/WinNodes.cpp + M src/dsql/make.cpp + M src/dsql/parse.y + M src/jrd/Function.epp + M src/jrd/JrdStatement.cpp + M src/jrd/JrdStatement.h + M src/jrd/Optimizer.cpp + M src/jrd/Optimizer.h + M src/jrd/RecordSourceNodes.cpp + M src/jrd/RecordSourceNodes.h + M src/jrd/Relation.h + M src/jrd/cmp.cpp + M src/jrd/cmp_proto.h + M src/jrd/dfw.epp + M src/jrd/evl.cpp + M src/jrd/exe.cpp + M src/jrd/exe.h + M src/jrd/lls.h + M src/jrd/met.epp + M src/jrd/met_proto.h + M src/jrd/nod.h + M src/jrd/opt.cpp + M src/jrd/opt_proto.h + M src/jrd/par.cpp + M src/jrd/par_proto.h + M src/jrd/pcmet.epp + M src/jrd/recsrc/FilteredStream.cpp + M src/jrd/recsrc/NestedLoopJoin.cpp + M src/jrd/recsrc/RecordSource.h + M src/jrd/rse.h + M src/misc/blrtable.cpp +1) Refactor nod_value_if. +2) Created ExprNode::expressionEqual method to replace a new big and ugly switch. +3) Make boolean referencers use BoolExprNode instead of jrd_nod, except nod_validate for now. This includes BinaryBoolNode and NotBoolNode working without jrd_nod references. +4) Rework in the impure allocation code (replace "csb_impure += ..." by CMP_impure calls). + 2010-09-18 18:19 asfernandes M src/dsql/parse.y Simplificate repetitive code Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-09-20 16:26:25 UTC (rev 51580) +++ firebird/trunk/src/jrd/build_no.h 2010-09-21 03:14:24 UTC (rev 51581) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28726 + FORMAL BUILD NUMBER:28728 */ -#define PRODUCT_VER_STRING "3.0.0.28726" -#define FILE_VER_STRING "WI-T3.0.0.28726" -#define LICENSE_VER_STRING "WI-T3.0.0.28726" -#define FILE_VER_NUMBER 3, 0, 0, 28726 +#define PRODUCT_VER_STRING "3.0.0.28728" +#define FILE_VER_STRING "WI-T3.0.0.28728" +#define LICENSE_VER_STRING "WI-T3.0.0.28728" +#define FILE_VER_NUMBER 3, 0, 0, 28728 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28726" +#define FB_BUILD_NO "28728" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-09-20 16:26:25 UTC (rev 51580) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-09-21 03:14:24 UTC (rev 51581) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28726 +BuildNum=28728 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-09-24 03:14:40
|
Revision: 51593 http://firebird.svn.sourceforge.net/firebird/?rev=51593&view=rev Author: firebirds Date: 2010-09-24 03:14:34 +0000 (Fri, 24 Sep 2010) 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 2010-09-23 15:22:44 UTC (rev 51592) +++ firebird/trunk/ChangeLog 2010-09-24 03:14:34 UTC (rev 51593) @@ -1,3 +1,36 @@ + 2010-09-23 15:22 asfernandes + M src/jrd/RecordSourceNodes.cpp +Make refactored code match original one, as see by Claudio. +The affected code is something that never executes. + + 2010-09-23 11:46 dimitr + M builds/win32/msvc8/dsql_server.vcproj + M builds/win32/msvc8/dsql_server_classic.vcproj + M builds/win32/msvc8/engine.vcproj + M builds/win32/msvc8/engine_classic.vcproj + M builds/win32/msvc8/engine_embed.vcproj +Fixed the MSVC8 build. + + 2010-09-23 09:53 robocop + M src/jrd/RecordSourceNodes.h + M src/jrd/evl.cpp + M src/jrd/exe.cpp + M src/jrd/opt.cpp +Misc. + + 2010-09-23 09:48 robocop + M src/dsql/ExprNodes.h + M src/dsql/pass1.cpp +Misc. + + 2010-09-23 09:47 robocop + M src/dsql/ExprNodes.cpp +Misc. + + 2010-09-23 09:09 robocop + M doc/README.build.msvc.html +Misc. + 2010-09-20 16:26 asfernandes M src/jrd/cmp.cpp M src/jrd/nod.h Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-09-23 15:22:44 UTC (rev 51592) +++ firebird/trunk/src/jrd/build_no.h 2010-09-24 03:14:34 UTC (rev 51593) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28728 + FORMAL BUILD NUMBER:28734 */ -#define PRODUCT_VER_STRING "3.0.0.28728" -#define FILE_VER_STRING "WI-T3.0.0.28728" -#define LICENSE_VER_STRING "WI-T3.0.0.28728" -#define FILE_VER_NUMBER 3, 0, 0, 28728 +#define PRODUCT_VER_STRING "3.0.0.28734" +#define FILE_VER_STRING "WI-T3.0.0.28734" +#define LICENSE_VER_STRING "WI-T3.0.0.28734" +#define FILE_VER_NUMBER 3, 0, 0, 28734 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28728" +#define FB_BUILD_NO "28734" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-09-23 15:22:44 UTC (rev 51592) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-09-24 03:14:34 UTC (rev 51593) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28728 +BuildNum=28734 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-09-25 03:14:50
|
Revision: 51604 http://firebird.svn.sourceforge.net/firebird/?rev=51604&view=rev Author: firebirds Date: 2010-09-25 03:14:43 +0000 (Sat, 25 Sep 2010) 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 2010-09-24 14:55:45 UTC (rev 51603) +++ firebird/trunk/ChangeLog 2010-09-25 03:14:43 UTC (rev 51604) @@ -1,3 +1,66 @@ + 2010-09-24 14:55 hvlad + M src/dsql/parse.y +Fixed SIMILAR TO syntax + + 2010-09-24 09:53 robocop + M src/dsql/AggNodes.cpp + M src/dsql/BoolNodes.cpp + M src/dsql/DdlNodes.epp + M src/dsql/ExprNodes.cpp + M src/dsql/Nodes.h + M src/dsql/StmtNodes.cpp + M src/dsql/WinNodes.cpp + M src/dsql/gen.cpp + M src/dsql/pass1.cpp + M src/jrd/DatabaseSnapshot.cpp + M src/jrd/ExtEngineManager.cpp + M src/jrd/RecordSourceNodes.cpp + M src/jrd/RecordSourceNodes.h + M src/jrd/SysFunction.cpp + M src/jrd/ValuesImpl.cpp + M src/jrd/blob_filter.cpp + M src/jrd/cch.cpp + M src/jrd/dfw.epp + M src/jrd/execute_statement.cpp + M src/jrd/ext.cpp + M src/jrd/extds/ExtDS.cpp + M src/jrd/extds/InternalDS.cpp + M src/jrd/nbak.cpp + M src/jrd/opt.cpp + M src/jrd/par.cpp + M src/jrd/recsrc/AggregatedStream.cpp + M src/jrd/recsrc/HashJoin.cpp + M src/jrd/recsrc/MergeJoin.cpp + M src/jrd/recsrc/NestedLoopJoin.cpp + M src/jrd/recsrc/ProcedureScan.cpp + M src/jrd/recsrc/RecursiveStream.cpp + M src/jrd/recsrc/VirtualTableScan.cpp + M src/jrd/recsrc/WindowedStream.cpp + M src/jrd/svc.cpp +Warnings. + + 2010-09-24 09:23 robocop + M src/jrd/Optimizer.cpp + M src/jrd/RecordSourceNodes.cpp + M src/jrd/par.cpp +Misc. + + 2010-09-24 08:33 robocop + M src/dsql/BoolNodes.cpp +Misc. + + 2010-09-24 07:26 dimitr + M builds/win32/msvc8/dsql_server_classic.vcproj +More fixes for the MSVC8 build. + + 2010-09-24 07:23 dimitr + M builds/win32/msvc8/dsql_server.vcproj + M builds/win32/msvc8/dsql_server_classic.vcproj + M builds/win32/msvc8/engine.vcproj + M builds/win32/msvc8/engine_classic.vcproj + M builds/win32/msvc8/engine_embed.vcproj +More fixes for the MSVC8 build. + 2010-09-23 15:22 asfernandes M src/jrd/RecordSourceNodes.cpp Make refactored code match original one, as see by Claudio. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-09-24 14:55:45 UTC (rev 51603) +++ firebird/trunk/src/jrd/build_no.h 2010-09-25 03:14:43 UTC (rev 51604) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28734 + FORMAL BUILD NUMBER:28740 */ -#define PRODUCT_VER_STRING "3.0.0.28734" -#define FILE_VER_STRING "WI-T3.0.0.28734" -#define LICENSE_VER_STRING "WI-T3.0.0.28734" -#define FILE_VER_NUMBER 3, 0, 0, 28734 +#define PRODUCT_VER_STRING "3.0.0.28740" +#define FILE_VER_STRING "WI-T3.0.0.28740" +#define LICENSE_VER_STRING "WI-T3.0.0.28740" +#define FILE_VER_NUMBER 3, 0, 0, 28740 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28734" +#define FB_BUILD_NO "28740" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-09-24 14:55:45 UTC (rev 51603) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-09-25 03:14:43 UTC (rev 51604) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28734 +BuildNum=28740 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-09-26 03:14:52
|
Revision: 51612 http://firebird.svn.sourceforge.net/firebird/?rev=51612&view=rev Author: firebirds Date: 2010-09-26 03:14:45 +0000 (Sun, 26 Sep 2010) 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 2010-09-25 23:08:18 UTC (rev 51611) +++ firebird/trunk/ChangeLog 2010-09-26 03:14:45 UTC (rev 51612) @@ -1,3 +1,22 @@ + 2010-09-25 23:08 asfernandes + M src/dsql/StmtNodes.cpp + M src/dsql/gen.cpp + M src/dsql/pass1.cpp + M src/jrd/Optimizer.cpp + M src/jrd/RecordSourceNodes.cpp + M src/jrd/SysFunction.cpp + M src/jrd/ValuesImpl.cpp + M src/jrd/par.cpp +Misc + + 2010-09-25 20:26 asfernandes + M src/dsql/BoolNodes.cpp +Misc things seen by Claudio + + 2010-09-25 20:19 asfernandes + M src/jrd/cmp.cpp +Fixed CORE-3141 - The last column in a view is returning as a null value even when it's not + 2010-09-24 14:55 hvlad M src/dsql/parse.y Fixed SIMILAR TO syntax Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-09-25 23:08:18 UTC (rev 51611) +++ firebird/trunk/src/jrd/build_no.h 2010-09-26 03:14:45 UTC (rev 51612) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28740 + FORMAL BUILD NUMBER:28743 */ -#define PRODUCT_VER_STRING "3.0.0.28740" -#define FILE_VER_STRING "WI-T3.0.0.28740" -#define LICENSE_VER_STRING "WI-T3.0.0.28740" -#define FILE_VER_NUMBER 3, 0, 0, 28740 +#define PRODUCT_VER_STRING "3.0.0.28743" +#define FILE_VER_STRING "WI-T3.0.0.28743" +#define LICENSE_VER_STRING "WI-T3.0.0.28743" +#define FILE_VER_NUMBER 3, 0, 0, 28743 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28740" +#define FB_BUILD_NO "28743" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-09-25 23:08:18 UTC (rev 51611) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-09-26 03:14:45 UTC (rev 51612) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28740 +BuildNum=28743 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-09-28 03:15:18
|
Revision: 51616 http://firebird.svn.sourceforge.net/firebird/?rev=51616&view=rev Author: firebirds Date: 2010-09-28 03:15:12 +0000 (Tue, 28 Sep 2010) 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 2010-09-27 12:29:49 UTC (rev 51615) +++ firebird/trunk/ChangeLog 2010-09-28 03:15:12 UTC (rev 51616) @@ -1,3 +1,7 @@ + 2010-09-27 12:29 dimitr + M src/dsql/StmtNodes.cpp +Fixed one of the problems with PSQL functions reported by Vlad privately. + 2010-09-25 23:08 asfernandes M src/dsql/StmtNodes.cpp M src/dsql/gen.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-09-27 12:29:49 UTC (rev 51615) +++ firebird/trunk/src/jrd/build_no.h 2010-09-28 03:15:12 UTC (rev 51616) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28743 + FORMAL BUILD NUMBER:28744 */ -#define PRODUCT_VER_STRING "3.0.0.28743" -#define FILE_VER_STRING "WI-T3.0.0.28743" -#define LICENSE_VER_STRING "WI-T3.0.0.28743" -#define FILE_VER_NUMBER 3, 0, 0, 28743 +#define PRODUCT_VER_STRING "3.0.0.28744" +#define FILE_VER_STRING "WI-T3.0.0.28744" +#define LICENSE_VER_STRING "WI-T3.0.0.28744" +#define FILE_VER_NUMBER 3, 0, 0, 28744 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28743" +#define FB_BUILD_NO "28744" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-09-27 12:29:49 UTC (rev 51615) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-09-28 03:15:12 UTC (rev 51616) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28743 +BuildNum=28744 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-10-01 03:15:38
|
Revision: 51619 http://firebird.svn.sourceforge.net/firebird/?rev=51619&view=rev Author: firebirds Date: 2010-10-01 03:15:31 +0000 (Fri, 01 Oct 2010) 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 2010-09-30 15:40:06 UTC (rev 51618) +++ firebird/trunk/ChangeLog 2010-10-01 03:15:31 UTC (rev 51619) @@ -1,3 +1,11 @@ + 2010-09-30 15:40 asfernandes + M src/jrd/SimilarToMatcher.h +Improve the debug log + + 2010-09-30 08:09 robocop + M doc/README.user.embedded +Misc. + 2010-09-27 12:29 dimitr M src/dsql/StmtNodes.cpp Fixed one of the problems with PSQL functions reported by Vlad privately. Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-09-30 15:40:06 UTC (rev 51618) +++ firebird/trunk/src/jrd/build_no.h 2010-10-01 03:15:31 UTC (rev 51619) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28744 + FORMAL BUILD NUMBER:28746 */ -#define PRODUCT_VER_STRING "3.0.0.28744" -#define FILE_VER_STRING "WI-T3.0.0.28744" -#define LICENSE_VER_STRING "WI-T3.0.0.28744" -#define FILE_VER_NUMBER 3, 0, 0, 28744 +#define PRODUCT_VER_STRING "3.0.0.28746" +#define FILE_VER_STRING "WI-T3.0.0.28746" +#define LICENSE_VER_STRING "WI-T3.0.0.28746" +#define FILE_VER_NUMBER 3, 0, 0, 28746 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28744" +#define FB_BUILD_NO "28746" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-09-30 15:40:06 UTC (rev 51618) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-10-01 03:15:31 UTC (rev 51619) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28744 +BuildNum=28746 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-10-03 03:15:17
|
Revision: 51621 http://firebird.svn.sourceforge.net/firebird/?rev=51621&view=rev Author: firebirds Date: 2010-10-03 03:15:10 +0000 (Sun, 03 Oct 2010) 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 2010-10-03 00:50:17 UTC (rev 51620) +++ firebird/trunk/ChangeLog 2010-10-03 03:15:10 UTC (rev 51621) @@ -1,3 +1,14 @@ + 2010-10-03 00:50 asfernandes + M src/dsql/BoolNodes.cpp + M src/dsql/ExprNodes.cpp + M src/jrd/Collation.cpp + M src/jrd/Collation.h + M src/jrd/SimilarToMatcher.h + M src/jrd/intl_classes.h + M src/utilities/ntrace/TraceConfiguration.cpp + M src/utilities/ntrace/TracePluginImpl.cpp +Sub-task CORE-3147 - Fix SUBSTRING(SIMILAR) in regard to initial and final shortest matching specified in the standard + 2010-09-30 15:40 asfernandes M src/jrd/SimilarToMatcher.h Improve the debug log Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-10-03 00:50:17 UTC (rev 51620) +++ firebird/trunk/src/jrd/build_no.h 2010-10-03 03:15:10 UTC (rev 51621) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28746 + FORMAL BUILD NUMBER:28747 */ -#define PRODUCT_VER_STRING "3.0.0.28746" -#define FILE_VER_STRING "WI-T3.0.0.28746" -#define LICENSE_VER_STRING "WI-T3.0.0.28746" -#define FILE_VER_NUMBER 3, 0, 0, 28746 +#define PRODUCT_VER_STRING "3.0.0.28747" +#define FILE_VER_STRING "WI-T3.0.0.28747" +#define LICENSE_VER_STRING "WI-T3.0.0.28747" +#define FILE_VER_NUMBER 3, 0, 0, 28747 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28746" +#define FB_BUILD_NO "28747" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-10-03 00:50:17 UTC (rev 51620) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-10-03 03:15:10 UTC (rev 51621) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28746 +BuildNum=28747 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fir...@us...> - 2010-10-05 03:13:53
|
Revision: 51626 http://firebird.svn.sourceforge.net/firebird/?rev=51626&view=rev Author: firebirds Date: 2010-10-05 03:13:47 +0000 (Tue, 05 Oct 2010) 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 2010-10-04 14:58:07 UTC (rev 51625) +++ firebird/trunk/ChangeLog 2010-10-05 03:13:47 UTC (rev 51626) @@ -1,3 +1,8 @@ + 2010-10-04 13:21 paulbeach + M src/extlib/fbudf/fbudf.h + M src/extlib/ib_udf.h +Oops! + 2010-10-03 00:50 asfernandes M src/dsql/BoolNodes.cpp M src/dsql/ExprNodes.cpp Modified: firebird/trunk/src/jrd/build_no.h =================================================================== --- firebird/trunk/src/jrd/build_no.h 2010-10-04 14:58:07 UTC (rev 51625) +++ firebird/trunk/src/jrd/build_no.h 2010-10-05 03:13:47 UTC (rev 51626) @@ -3,16 +3,16 @@ *** DO NOT EDIT *** TO CHANGE ANY INFORMATION IN HERE PLEASE EDIT src/misc/writeBuildNum.sh - FORMAL BUILD NUMBER:28747 + FORMAL BUILD NUMBER:28748 */ -#define PRODUCT_VER_STRING "3.0.0.28747" -#define FILE_VER_STRING "WI-T3.0.0.28747" -#define LICENSE_VER_STRING "WI-T3.0.0.28747" -#define FILE_VER_NUMBER 3, 0, 0, 28747 +#define PRODUCT_VER_STRING "3.0.0.28748" +#define FILE_VER_STRING "WI-T3.0.0.28748" +#define LICENSE_VER_STRING "WI-T3.0.0.28748" +#define FILE_VER_NUMBER 3, 0, 0, 28748 #define FB_MAJOR_VER "3" #define FB_MINOR_VER "0" #define FB_REV_NO "0" -#define FB_BUILD_NO "28747" +#define FB_BUILD_NO "28748" #define FB_BUILD_TYPE "T" #define FB_BUILD_SUFFIX "Firebird 3.0 Unstable" Modified: firebird/trunk/src/misc/writeBuildNum.sh =================================================================== --- firebird/trunk/src/misc/writeBuildNum.sh 2010-10-04 14:58:07 UTC (rev 51625) +++ firebird/trunk/src/misc/writeBuildNum.sh 2010-10-05 03:13:47 UTC (rev 51626) @@ -9,7 +9,7 @@ MajorVer=3 MinorVer=0 RevNo=0 -BuildNum=28747 +BuildNum=28748 if [ "$SPECIAL_BUILD_SUFFIX" = "" ]; then # Normal builds This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |