8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 04:43:03 +01:00

Sync with master

This commit is contained in:
Dmitry Yemanov 2024-03-31 14:35:09 +03:00
commit f561b80f25
478 changed files with 24063 additions and 12083 deletions

View File

@ -0,0 +1,20 @@
name: Adjust snapshot build number
description: Adjust snapshot build number
runs:
using: composite
steps:
- id: adjust-snapshot-buildno
if:
github.repository == 'FirebirdSQL/firebird' &&
(github.ref_type == 'branch' &&
(github.ref_name == 'master' ||
(startsWith(github.ref_name, 'v') && endsWith(github.ref_name, '-release'))
)
) ||
false
shell: bash
run: |
sed -i'' -e "s/SuffixKind=\(.*\)/SuffixKind=\"$(echo ${{ github.sha }} | cut -c 1-7)\"/" src/misc/writeBuildNum.sh
mkdir gen
src/misc/writeBuildNum.sh rebuildHeader

View File

@ -14,7 +14,7 @@ jobs:
steps:
- name: Generate ChangeLog
uses: asfernandes/changelog-generator@v1
uses: asfernandes/changelog-generator@v2
with:
fix-version-label: "fix-version: ${{ github.event.inputs.version }}"
token: ${{ secrets.GITHUB_TOKEN }}

View File

@ -6,14 +6,17 @@ jobs:
build-linux-ubuntu-x64-clang:
if: github.ref_type != 'tag'
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Prepare
run: |
sudo apt-get install libtool-bin libtomcrypt1 libtomcrypt-dev libtommath1 libtommath-dev libicu-dev zlib1g-dev cmake
@ -29,7 +32,7 @@ jobs:
(cd Firebird-*-linux-x64; sudo ./install.sh -silent)
- name: Upload installer
uses: actions/upload-artifact@main
uses: actions/upload-artifact@v4
with:
name: firebird-ubuntu-20.04-clang-x64
path: gen/Firebird-*-linux-x64.tar.gz
@ -51,15 +54,18 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Get Release Notes
uses: ./.github/actions/get-release-notes
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v3
if: ${{ startsWith(matrix.arch, 'arm') }}
- name: Build
@ -68,13 +74,13 @@ jobs:
./run-${{ matrix.arch }}.sh
- name: Upload installer
uses: actions/upload-artifact@main
uses: actions/upload-artifact@v4
with:
name: firebird-linux-${{ matrix.arch }}
path: gen/Firebird-*-linux-${{ matrix.arch }}.tar.gz
- name: Upload debug symbols
uses: actions/upload-artifact@main
uses: actions/upload-artifact@v4
with:
name: firebird-linux-${{ matrix.arch }}-debugSymbols
path: gen/Firebird-*-linux-${{ matrix.arch }}-debugSymbols.tar.gz
@ -92,10 +98,13 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Get Release Notes
uses: ./.github/actions/get-release-notes
@ -113,17 +122,20 @@ jobs:
build-alpine-x64:
if: github.ref_type != 'tag'
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
container: alpine:3.14
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Prepare
run: apk update && apk --no-cache --update add build-base libtool git autoconf automake cmake zlib-dev icu-dev ncurses-dev libedit-dev linux-headers tar
run: apk update && apk --no-cache --update add build-base libtool git autoconf automake cmake zlib-dev icu-dev ncurses-dev libedit-dev linux-headers tar sed
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Build
run: |
@ -135,7 +147,7 @@ jobs:
tar xzvf gen/Firebird-*-linux-x64.tar.gz
- name: Upload installer
uses: actions/upload-artifact@main
uses: actions/upload-artifact@v4
with:
name: firebird-alpine-x64
path: gen/Firebird-*-linux-x64.tar.gz
@ -156,10 +168,13 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Prepare
shell: cmd
run: |
@ -185,13 +200,13 @@ jobs:
call run_tests.bat
- name: Upload zip
uses: actions/upload-artifact@main
uses: actions/upload-artifact@v4
with:
name: firebird-windows-vs-${{ env.VS_VERSION }}-${{ matrix.platform }}-zip
path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}.zip
- name: Upload installer
uses: actions/upload-artifact@main
uses: actions/upload-artifact@v4
with:
name: firebird-windows-vs-${{ env.VS_VERSION }}-${{ matrix.platform }}-installer
path: builds/install_images/*-windows-${{ matrix.platform }}.exe
@ -206,45 +221,57 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Get Release Notes
uses: ./.github/actions/get-release-notes
- name: Build x86 for client package in x64
id: build-x86
shell: cmd
if: ${{ matrix.platform == 'x64' }}
run: |
mkdir builds\install_images
cd builds\docker\windows
call build.bat
call run.bat C:\fbscripts\build-x86.bat
- name: Build
id: build
shell: cmd
env:
PLATFORM: ${{ matrix.platform }}
run: |
echo arch_suffix=%PLATFORM%>> %GITHUB_OUTPUT%
mkdir builds\install_images
cd builds\docker\windows
call build.bat
call run.bat C:\fbscripts\build-%PLATFORM%.bat
- name: Upload zip
uses: actions/upload-artifact@main
uses: actions/upload-artifact@v4
with:
name: firebird-windows-${{ matrix.platform }}-zip
path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}.zip
- name: Upload zip (withDebugSymbols)
uses: actions/upload-artifact@main
uses: actions/upload-artifact@v4
with:
name: firebird-windows-${{ matrix.platform }}-withDebugSymbols-zip
path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}-withDebugSymbols.zip
- name: Upload installer
uses: actions/upload-artifact@main
uses: actions/upload-artifact@v4
with:
name: firebird-windows-${{ matrix.platform }}-installer
path: builds/install_images/*-windows-${{ matrix.platform }}.exe
- name: Upload installer (withDebugSymbols)
uses: actions/upload-artifact@main
uses: actions/upload-artifact@v4
with:
name: firebird-windows-${{ matrix.platform }}-withDebugSymbols-installer
path: builds/install_images/*-windows-${{ matrix.platform }}-withDebugSymbols.exe
@ -254,121 +281,66 @@ jobs:
with:
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
deletePatterns: |
Firebird-*-windows-${{ steps.build.outputs.arch_suffix }}*.exe
Firebird-*-windows-${{ steps.build.outputs.arch_suffix }}*.zip
Firebird-*-windows-${{ matrix.platform }}*.exe
Firebird-*-windows-${{ matrix.platform }}*.zip
uploadFiles: |
builds/install_images/Firebird-*-windows-*.exe
builds/install_images/Firebird-*-windows-*.zip
builds/install_images/Firebird-*-windows-${{ matrix.platform }}*.exe
builds/install_images/Firebird-*-windows-${{ matrix.platform }}*.zip
build-macos:
runs-on: macos-latest
name: build-macos-${{ matrix.arch }}
runs-on: ${{ (matrix.arch == 'arm64' && 'macos-14') || 'macos-12' }}
strategy:
fail-fast: false
matrix:
arch:
- x64
- arm64
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 10
submodules: 'true'
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Prepare - Install tools
run: |
brew install automake cmake libtool ninja
brew install automake autoconf-archive cmake libtool ninja
- name: Cache - libc++ install
id: cache-libcxx-install-macos
uses: actions/cache@v3
# libcxx build is not working with python >= 3.12
- name: Do not use preinstalled python >= 3.12
run: |
brew uninstall --ignore-dependencies python@3.12
[ -e /Library/Frameworks/Python.framework ] && \
sudo mv /Library/Frameworks/Python.framework /Library/Frameworks/Python.framework.dont-look-at-this
brew install python@3.11
ln -s "$(brew --prefix python@3.11)/bin/python3" "$(brew --prefix python@3.11)/bin/python"
- name: Cache - vcpkg
uses: actions/cache@v4
with:
key: ${{ runner.os }}-libcxx-install-13.0.1
key: ${{ runner.os }}-vcpkg-0
path: |
extern/libcxx-macos-install
- name: Download libc++ sources
if: steps.cache-libcxx-install-macos.outputs.cache-hit != 'true'
run: |
mkdir extern/libcxx-macos
pushd extern/libcxx-macos
curl -OL https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/llvm-project-13.0.1.src.tar.xz
tar xJf llvm-project-13.0.1.src.tar.xz
popd
- name: Build libc++
if: steps.cache-libcxx-install-macos.outputs.cache-hit != 'true'
run: |
LIBCXX_BUILD_PATH=`pwd`/extern/libcxx-macos-build
LIBCXX_INSTALL_PATH=`pwd`/extern/libcxx-macos-install
mkdir $LIBCXX_BUILD_PATH
pushd extern/libcxx-macos/llvm-project-13.0.1.src
export MACOSX_DEPLOYMENT_TARGET=10.9
cmake -G Ninja -S llvm -B $LIBCXX_BUILD_PATH \
-DLLVM_ENABLE_PROJECTS="libcxx;libcxxabi" \
-DCMAKE_INSTALL_PREFIX=$LIBCXX_INSTALL_PATH \
-DCMAKE_BUILD_TYPE=Release \
-DLIBCXX_ENABLE_SHARED=false \
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=true
ninja -C $LIBCXX_BUILD_PATH cxx cxxabi
ninja -C $LIBCXX_BUILD_PATH install-cxx install-cxxabi
popd
- name: Cache - libicu install
id: cache-libicu-install-macos
uses: actions/cache@v3
with:
key: ${{ runner.os }}-libicu-install-63.2
path: |
extern/libicu-macos-install
- name: Download and patch libicu sources
if: steps.cache-libicu-install-macos.outputs.cache-hit != 'true'
run: |
mkdir extern/libicu-macos
pushd extern/libicu-macos
curl -OL https://github.com/unicode-org/icu/releases/download/release-63-2/icu4c-63_2-src.tgz
curl -OL https://github.com/unicode-org/icu/commit/24aeb9a5a5874f4ce5db912e30670ac3ae236971.patch
tar xzf icu4c-63_2-src.tgz
cd icu/source
patch -p3 < ../../24aeb9a5a5874f4ce5db912e30670ac3ae236971.patch
popd
- name: Build libicu
if: steps.cache-libicu-install-macos.outputs.cache-hit != 'true'
run: |
export LIBTOOLIZE=glibtoolize
export LIBTOOL=glibtool
LIBICU_INSTALL_PATH=`pwd`/extern/libicu-macos-install
pushd extern/libicu-macos/icu/source
./runConfigureICU MacOSX --prefix=$LIBICU_INSTALL_PATH
make -j4
make install
install_name_tool -id @rpath/lib/libicuuc.dylib $LIBICU_INSTALL_PATH/lib/libicuuc.dylib
install_name_tool -id @rpath/lib/libicui18n.dylib $LIBICU_INSTALL_PATH/lib/libicui18n.dylib
install_name_tool -id @rpath/lib/libicudata.dylib $LIBICU_INSTALL_PATH/lib/libicudata.dylib
install_name_tool -change libicudata.63.dylib @loader_path/libicudata.63.dylib $LIBICU_INSTALL_PATH/lib/libicuuc.63.dylib
install_name_tool -change libicudata.63.dylib @loader_path/libicudata.63.dylib $LIBICU_INSTALL_PATH/lib/libicui18n.63.dylib
install_name_tool -change libicuuc.63.dylib @loader_path/libicuuc.63.dylib $LIBICU_INSTALL_PATH/lib/libicui18n.63.dylib
popd
$HOME/.cache/vcpkg/archives
- name: Build
run: |
export LIBTOOLIZE=glibtoolize
export LIBTOOL=glibtool
LIBCXX_INSTALL_PATH=`pwd`/extern/libcxx-macos-install
LIBICU_INSTALL_PATH=`pwd`/extern/libicu-macos-install
mkdir -p gen/Release/firebird/lib
cp -R $LIBICU_INSTALL_PATH/lib/libicu{data,i18n,uc}.*dylib gen/Release/firebird/lib/
export C_INCLUDE_PATH="$LIBICU_INSTALL_PATH/include:`xcrun --show-sdk-path`/usr/include"
export CPLUS_INCLUDE_PATH="$LIBCXX_INSTALL_PATH/include/c++/v1:$LIBICU_INSTALL_PATH/include:`xcrun --show-sdk-path`/usr/include"
export LIBRARY_PATH="$LIBCXX_INSTALL_PATH/lib:$LIBICU_INSTALL_PATH/lib:$LIBRARY_PATH"
export PATH="$(brew --prefix python@3.11)/bin:$PATH"
./autogen.sh --with-builtin-tommath --with-builtin-tomcrypt
make -j4
make tests -j4
make run_tests
(cd gen; make -B -f make.platform.postfix ICU_LOC="$LIBICU_INSTALL_PATH/lib/")
(cd gen; make -B -f Makefile.install)
make -C gen -B -f make.platform.postfix
make -C gen -B -f Makefile.install
# Rename directory to make sure the build is relocatable.
mv gen gen2
@ -384,17 +356,17 @@ jobs:
mv gen/Release/*.pkg gen/artifacts
- name: Upload installer
uses: actions/upload-artifact@main
uses: actions/upload-artifact@v4
with:
name: firebird-macos
name: firebird-macos-${{ matrix.arch }}
path: gen/artifacts
- name: Create release
uses: ./.github/actions/create-release
with:
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
deletePatterns: Firebird-*-macos-x64*.pkg
uploadFiles: gen/artifacts/Firebird-*-macos-x64*.pkg
deletePatterns: Firebird-*-macos-${{ matrix.arch }}*.pkg
uploadFiles: gen/artifacts/Firebird-*-macos-${{ matrix.arch }}*.pkg
build-android-initial:
name: build-android-${{ matrix.arch }}-initial
@ -415,10 +387,13 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Prepare - install Linux tools
run: |
sudo apt-get install libtool-bin libtomcrypt1 libtomcrypt-dev libtommath1 libtommath-dev libicu-dev zlib1g-dev
@ -439,7 +414,7 @@ jobs:
builds/install/arch-specific/android/BuildPackage.sh $ARCH
- name: Upload initial build
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: firebird-android-initial-${{ matrix.arch }}
path: |
@ -449,7 +424,7 @@ jobs:
build-android-final:
name: build-android-${{ matrix.arch }}-final
needs: build-android-initial
runs-on: macos-latest
runs-on: ubuntu-latest
env:
ARCH: ${{ matrix.arch }}
@ -464,24 +439,33 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Download initial build
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: firebird-android-initial-${{ matrix.arch }}
path: gen
- name: Cache - AVD
uses: actions/cache@v3
uses: actions/cache@v4
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-v3
key: avd-v7
- name: Create AVD and generate snapshot for caching
if: steps.avd-cache.outputs.cache-hit != 'true'
@ -508,25 +492,24 @@ jobs:
emulator-options: -no-snapshot-save -no-window -noaudio -no-boot-anim -camera-back none -port 5554
emulator-boot-timeout: 900
script: |
sleep 20
adb wait-for-device
adb root
NDK=/Users/runner/Library/Android/sdk/ndk/25.1.8937393 builds/install/arch-specific/android/BuildFinalPackage.sh $ARCH
NDK=/usr/local/lib/android/sdk/ndk/25.1.8937393 builds/install/arch-specific/android/BuildFinalPackage.sh $ARCH
- name: Upload installer
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: firebird-android-${{ matrix.arch }}
path: gen/Firebird-*-android-${{ matrix.arch }}.tar.gz
- name: Upload installer (withDebugSymbols)
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: firebird-android-${{ matrix.arch }}-withDebugSymbols
path: gen/Firebird-*-android-${{ matrix.arch }}-withDebugSymbols.tar.gz
- name: Delete initial build
uses: geekyeggo/delete-artifact@v1
uses: geekyeggo/delete-artifact@v4
with:
name: firebird-android-initial-${{ matrix.arch }}
@ -543,30 +526,33 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Download final build (x86)
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: firebird-android-x86
path: android/temp
- name: Download final build (x64)
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: firebird-android-x64
path: android/temp
- name: Download final build (arm32)
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: firebird-android-arm32
path: android/temp
- name: Download final build (arm64)
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: firebird-android-arm64
path: android/temp
@ -593,7 +579,7 @@ jobs:
embedded/build/outputs/aar/Firebird-$FB_VERSION-android-embedded.aar
- name: Upload installer
uses: actions/upload-artifact@main
uses: actions/upload-artifact@v4
with:
name: firebird-android-aar
path: android/embedded/build/outputs/aar/Firebird-*-android-embedded.aar

52
.github/workflows/qa.yml vendored Normal file
View File

@ -0,0 +1,52 @@
name: QA
on:
workflow_dispatch:
inputs:
branch:
type: string
description: Branch name
required: true
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout firebird-qa
uses: actions/checkout@v3
with:
fetch-depth: 1
repository: FirebirdSQL/firebird-qa
path: firebird-qa
- name: Download firebird installer
id: download-artifact
uses: dawidd6/action-download-artifact@v2
with:
github_token: ${{secrets.GITHUB_TOKEN}}
workflow: main.yml
workflow_conclusion: success
branch: ${{ github.event.inputs.branch }}
name: firebird-linux-x64
name_is_regexp: false
path: firebird-installer
- name: Run firebird-qa
run: |
export FBQA_INSTALLER=$(echo ./firebird-installer/*.tar.gz)
export FBQA_OUT=out
./firebird-qa/run-docker.sh --timeout 250 ./tests/ | tee out/out.txt
- name: Update summary
if: always()
run: |
cat out/md_report.md >> $GITHUB_STEP_SUMMARY
- name: Upload result
uses: actions/upload-artifact@main
if: always()
with:
name: firebird-qa
path: out/

View File

@ -14,6 +14,7 @@ jobs:
matrix:
branch:
- master
- v5.0-release
- v4.0-release
steps:

5
.gitignore vendored
View File

@ -8,8 +8,8 @@ m4/
autom4te.cache/
builds/install_images
aclocal.m4
*.patch
*.diff
/*.patch
/*.diff
config.status
configure
config*~
@ -29,3 +29,4 @@ extern/ttmath/release/
/src/include/gen/autoconfig.auto
/src/include/gen/autoconfig.h
extern/libcds/lib/
/vcpkg_installed/

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "vcpkg"]
path = vcpkg
url = https://github.com/Microsoft/vcpkg.git

View File

@ -1,3 +1,273 @@
# v5.0 Release Candidate 1
## New features
* [#7682](https://github.com/FirebirdSQL/firebird/issues/7682): Use _ParallelWorkers_ setting from firebird.conf as default for all parallelised operations
Contributor(s): Vlad Khorsun
* [#7469](https://github.com/FirebirdSQL/firebird/pull/7469): Make Android port (client / embedded) work inside apps
Contributor(s): Adriano dos Santos Fernandes
* [#5959](https://github.com/FirebirdSQL/firebird/issues/5959): Add support for `QUARTER` to `EXTRACT`, `FIRST_DAY` and `LAST_DAY`
Contributor(s): Adriano dos Santos Fernandes
## Improvements
* [#7720](https://github.com/FirebirdSQL/firebird/pull/7720): MacOS: build _libicu_ and static _libc++_ using _vcpkg_
Contributor(s): Adriano dos Santos Fernandes
* [#7707](https://github.com/FirebirdSQL/firebird/pull/7707): Better processing and optimization if `IN <list>` predicates
Contributor(s): Dmitry Yemanov
* [#7692](https://github.com/FirebirdSQL/firebird/issues/7692): Make trace config parser resolve symlinks in database file path in trace configuration
Contributor(s): Vlad Khorsun
* [#7688](https://github.com/FirebirdSQL/firebird/issues/7688): Profiler should not miss query's top-level access paths nodes
Contributor(s): Adriano dos Santos Fernandes
* [#7687](https://github.com/FirebirdSQL/firebird/issues/7687): Add `LEVEL` column to `PLG$PROF_RECORD_SOURCES` and `PLG$PROF_RECORD_SOURCE_STATS_VIEW`
Contributor(s): Adriano dos Santos Fernandes
* [#7685](https://github.com/FirebirdSQL/firebird/issues/7685): Add overload `FbVarChar::set` function for non null-terminated string
Contributor(s): Adriano dos Santos Fernandes
* [#7680](https://github.com/FirebirdSQL/firebird/pull/7680): Make boot build on Windows a bit more user-friendly
Contributor(s): Vlad Khorsun
* [#7652](https://github.com/FirebirdSQL/firebird/issues/7652): Make the profiler store aggregated requests by default, with option for detailed store
Contributor(s): Adriano dos Santos Fernandes
* [#7642](https://github.com/FirebirdSQL/firebird/issues/7642): Getting the current `DECFLOAT ROUND/TRAPS` settings
Contributor(s): Alexander Peshkov
* [#7637](https://github.com/FirebirdSQL/firebird/issues/7637): Run as application not specifying switch -a
Contributor(s): Vlad Khorsun
* [#7634](https://github.com/FirebirdSQL/firebird/issues/7634): Include Performance Cores only in default affinity mask
Contributor(s): Vlad Khorsun
* [#7576](https://github.com/FirebirdSQL/firebird/issues/7576): Allow nested parenthesized joined table
Contributor(s): Mark Rotteveel
* [#7559](https://github.com/FirebirdSQL/firebird/pull/7559): Optimize creation of expression and partial indices
Contributor(s): Dmitry Yemanov
* [#7550](https://github.com/FirebirdSQL/firebird/issues/7550): Add support for _-parallel_ in combination with _gfix -icu_
Contributor(s): Vlad Khorsun
* [#7542](https://github.com/FirebirdSQL/firebird/issues/7542): Compiler warnings raise when build cloop generated Firebird.pas in RAD Studio 11.3
Contributor(s): Vlad Khorsun
* [#7539](https://github.com/FirebirdSQL/firebird/issues/7539): `RDB$GET/SET_CONTEXT()`: enclosing in apostrophes or double quotes of a missed namespace/variable will make output more readable
Contributor(s): Vlad Khorsun
* [#7536](https://github.com/FirebirdSQL/firebird/issues/7536): Add ability to query current value of parallel workers for an attachment
Contributor(s): Vlad Khorsun
* [#7506](https://github.com/FirebirdSQL/firebird/pull/7506): Reduce output of the `SHOW GRANTS` command
Contributor(s): Artyom Ivanov
* [#7494](https://github.com/FirebirdSQL/firebird/issues/7494): Firebird performance issue - unnecessary index reads
Contributor(s): Vlad Khorsun
* [#7475](https://github.com/FirebirdSQL/firebird/issues/7475): `SHOW SYSTEM` command: provide list of functions belonging to system packages
Contributor(s): Alexander Peshkov
* [#7466](https://github.com/FirebirdSQL/firebird/pull/7466): Add _COMPILE_ trace events for procedures/functions/triggers
Contributor(s): Dmitry Yemanov
* [#7425](https://github.com/FirebirdSQL/firebird/issues/7425): Add _REPLICA MODE_ to the output of the _isql_ `SHOW DATABASE` command
Contributor(s): Dmitry Yemanov
* [#7405](https://github.com/FirebirdSQL/firebird/pull/7405): Surface internal optimization modes (all rows vs first rows) at the SQL and configuration levels
Contributor(s): Dmitry Yemanov
* [#7213](https://github.com/FirebirdSQL/firebird/pull/7213): Use Windows private namespace for kernel objects used in server-to-server IPC
Contributor(s): Vlad Khorsun
* [#7046](https://github.com/FirebirdSQL/firebird/issues/7046): Make ability to add comment to mapping (`COMMENT ON MAPPING ... IS ...`)
Contributor(s): Alexander Peshkov
* [#7001](https://github.com/FirebirdSQL/firebird/issues/7001): _ISQL_ showing publication status
Contributor(s): Dmitry Yemanov
## Bugfixes
* [#7747](https://github.com/FirebirdSQL/firebird/pull/7747): Fix an issue where the garbage collection in indexes and blobs is not performed in _VIO_backout_
Contributor(s): Ilya Eremin
* [#7738](https://github.com/FirebirdSQL/firebird/issues/7738): Crash on multiple connections/disconnections
Contributor(s): Alexander Peshkov
* [#7737](https://github.com/FirebirdSQL/firebird/pull/7737): Fix cases where the precedence relationship between a record page and a blob page is not set
Contributor(s): Ilya Eremin
* [#7731](https://github.com/FirebirdSQL/firebird/issues/7731): Display length of timestamp with timezone is wrong in dialect 1
Contributor(s): Alexander Peshkov
* [#7730](https://github.com/FirebirdSQL/firebird/issues/7730): Server ignores the size of VARCHAR when performing `SET BIND ... TO VARCHAR(N)`
Contributor(s): Alexander Peshkov
* [#7729](https://github.com/FirebirdSQL/firebird/issues/7729): `SET BIND OF TS WITH TZ TO VARCHAR(128)` uses the date format of dialect 1
Contributor(s): Alexander Peshkov
* [#7727](https://github.com/FirebirdSQL/firebird/issues/7727): Index for integer column cannot be used when `INT128/DECFLOAT` value is being searched
Contributor(s): Dmitry Yemanov
* [#7723](https://github.com/FirebirdSQL/firebird/issues/7723): Wrong error message on login if the user doesn't exists and WireCrypt is disabled
Contributor(s): Alexander Peshkov
* [#7713](https://github.com/FirebirdSQL/firebird/issues/7713): `FOR SELECT` statement can not see any changes made in `DO` block
Contributor(s): Vlad Khorsun
* [#7710](https://github.com/FirebirdSQL/firebird/issues/7710): Expression index - more than one null value cause attempt to store duplicate value error - FB5.0 beta 2
Contributor(s): Vlad Khorsun
* [#7703](https://github.com/FirebirdSQL/firebird/issues/7703): Requests leak in _AutoCacheRequest_
Contributor(s): Alexander Peshkov
* [#7696](https://github.com/FirebirdSQL/firebird/issues/7696): `select from external procedure` validates output parameters even when fetch method returns false
Contributor(s): Adriano dos Santos Fernandes
* [#7694](https://github.com/FirebirdSQL/firebird/pull/7694): Fix false positives of "missing entries for record X" error during index validation when a deleted record version is committed and has a backversion
Contributor(s): Ilya Eremin
* [#7691](https://github.com/FirebirdSQL/firebird/issues/7691): `with caller privileges` has no effect in triggers
Contributor(s): Alexander Peshkov
* [#7683](https://github.com/FirebirdSQL/firebird/issues/7683): `rdb$time_zone_util.transitions` returns an infinite resultset
Contributor(s): Adriano dos Santos Fernandes
* [#7676](https://github.com/FirebirdSQL/firebird/issues/7676): "Attempt to evaluate index expression recursively"
Contributor(s): Dmitry Yemanov
* [#7670](https://github.com/FirebirdSQL/firebird/issues/7670): Cursor name can duplicate parameter and variable names in procedures and functions
Contributor(s): Adriano dos Santos Fernandes
* [#7665](https://github.com/FirebirdSQL/firebird/issues/7665): Wrong result ordering in `LEFT JOIN` query
Contributor(s): Dmitry Yemanov
* [#7664](https://github.com/FirebirdSQL/firebird/issues/7664): `DROP TABLE` executed for a table with big records may lead to "wrong page type" or "end of file" error
Contributor(s): Vlad Khorsun, Ilya Eremin
* [#7662](https://github.com/FirebirdSQL/firebird/pull/7662): Fix performance issues in _prepare_update()_
Contributor(s): Ilya Eremin
* [#7661](https://github.com/FirebirdSQL/firebird/issues/7661): Classic Server rejects new connections
Contributor(s): Vlad Khorsun
* [#7658](https://github.com/FirebirdSQL/firebird/issues/7658): Segfault when closing database in valgrind-enabled build
Contributor(s): Alexander Peshkov
* [#7649](https://github.com/FirebirdSQL/firebird/issues/7649): Switch Linux performance counter timer to CLOCK_MONOTONIC_RAW
Contributor(s): Adriano dos Santos Fernandes
* [#7641](https://github.com/FirebirdSQL/firebird/pull/7641): Fix wrong profiler measurements due to overflow.
Contributor(s): Adriano dos Santos Fernandes
* [#7638](https://github.com/FirebirdSQL/firebird/issues/7638): `OVERRIDING USER VALUE` should be allowed for `GENERATED ALWAYS AS IDENTITY`
Contributor(s): Adriano dos Santos Fernandes
* [#7627](https://github.com/FirebirdSQL/firebird/issues/7627): The size of the database with big records becomes bigger after backup/restore
Contributor(s): Ilya Eremin
* [#7626](https://github.com/FirebirdSQL/firebird/issues/7626): Segfault when new attachment is done to shutting down database
Contributor(s): Alexander Peshkov
* [#7611](https://github.com/FirebirdSQL/firebird/issues/7611): Can't backup/restore database from v3 to v4 with `SEC$USER_NAME` field longer than 10 characters
Contributor(s): Adriano dos Santos Fernandes
* [#7610](https://github.com/FirebirdSQL/firebird/issues/7610): Uninitialized/random value assigned to `RDB$ROLES` -> `RDB$SYSTEM PRIVILEGES` when restoring from FB3 backup
Contributor(s): Adriano dos Santos Fernandes
* [#7604](https://github.com/FirebirdSQL/firebird/issues/7604): PSQL functions do not convert the output BLOB to the connection character set.
Contributor(s): Adriano dos Santos Fernandes
* [#7603](https://github.com/FirebirdSQL/firebird/issues/7603): `BIN_SHR` on `INT128` does not apply sign extension
Contributor(s): Alexander Peshkov
* [#7599](https://github.com/FirebirdSQL/firebird/issues/7599): Conversion of text with '\0' to `DECFLOAT` without errors
Contributor(s): Alexander Peshkov
* [#7598](https://github.com/FirebirdSQL/firebird/issues/7598): DDL statements hang when the compiled statements cache is enabled
Contributor(s): Vlad Khorsun
* [#7582](https://github.com/FirebirdSQL/firebird/issues/7582): Missing _isc_info_end_ in _Firebird.pas_
Contributor(s): Alexander Peshkov
* [#7579](https://github.com/FirebirdSQL/firebird/issues/7579): Cannot _nbackup_ a firebird 3.0 database in firebird 4.0 service with _engine12_ setup in _Providers_
Contributor(s): Alexander Peshkov
* [#7574](https://github.com/FirebirdSQL/firebird/issues/7574): Derived table syntax allows dangling `AS`
Contributor(s): Adriano dos Santos Fernandes
* [#7569](https://github.com/FirebirdSQL/firebird/issues/7569): Multi-level order by and offset/fetch ignored on parenthesized query expressions
Contributor(s): Adriano dos Santos Fernandes
* [#7562](https://github.com/FirebirdSQL/firebird/issues/7562): Profiler elapsed times are incorrect in Windows
Contributor(s): Adriano dos Santos Fernandes
* [#7556](https://github.com/FirebirdSQL/firebird/issues/7556): FB Classic can hang when attempts to attach DB while it is starting to encrypt/decrypt
Contributor(s): Alexander Peshkov
* [#7555](https://github.com/FirebirdSQL/firebird/issues/7555): Invalid configuration for random fresh created database may be used after drop of another one with alias in databases.conf
Contributor(s): Alexander Peshkov
* [#7554](https://github.com/FirebirdSQL/firebird/issues/7554): Firebird 5 partial index creation causes server hang up
Contributor(s): Vlad Khorsun
* [#7553](https://github.com/FirebirdSQL/firebird/issues/7553): Firebird 5 profiler error with subselects
Contributor(s): Adriano dos Santos Fernandes
* [#7548](https://github.com/FirebirdSQL/firebird/issues/7548): `SET BIND OF TIMESTAMP WITH TIME ZONE TO CHAR` is not working with UTF8 connection charset
Contributor(s): Adriano dos Santos Fernandes
* [#7537](https://github.com/FirebirdSQL/firebird/issues/7537): Wrong name in error message when unknown namespace is passed into RDB$SET_CONTEXT()
Contributor(s): Vlad Khorsun
* [#7535](https://github.com/FirebirdSQL/firebird/issues/7535): High CPU usage connect to Firebird 3 database using Firebird 4 Classic and SuperClassic service
Contributor(s): Vlad Khorsun
* [#7514](https://github.com/FirebirdSQL/firebird/issues/7514): Segfault when detaching after deleting shadow on Classic
Contributor(s): Alexander Peshkov
* [#7504](https://github.com/FirebirdSQL/firebird/issues/7504): Segfault when closing SQL statement in remote provider during shutdown
Contributor(s): Alexander Peshkov
* [#7499](https://github.com/FirebirdSQL/firebird/issues/7499): Problem with restore
Contributor(s): Vlad Khorsun
* [#7488](https://github.com/FirebirdSQL/firebird/issues/7488): Invalid real to string cast
Contributor(s): Alexander Peshkov, Artyom Abakumov
* [#7486](https://github.com/FirebirdSQL/firebird/issues/7486): No initialization of rpb's runtime flags causes problems with `SKIP LOCKED` when config _ReadConsistency = 0_ and SuperServer
Contributor(s): Adriano dos Santos Fernandes
* [#7484](https://github.com/FirebirdSQL/firebird/issues/7484): External engine `SYSTEM` not found
Contributor(s): Adriano dos Santos Fernandes
* [#7480](https://github.com/FirebirdSQL/firebird/issues/7480): Firebird server stops accepting new connections after some time
Contributor(s): Alexander Peshkov
* [#7472](https://github.com/FirebirdSQL/firebird/issues/7472): Window functions may lead to crash interacting with others exceptions
Contributor(s): Adriano dos Santos Fernandes
* [#7464](https://github.com/FirebirdSQL/firebird/issues/7464): Crash on repeating update in 5.0
Contributor(s): Adriano dos Santos Fernandes
* [#7456](https://github.com/FirebirdSQL/firebird/issues/7456): Impossible drop function in package with name of PSQL-function
Contributor(s): Adriano dos Santos Fernandes
* [#7445](https://github.com/FirebirdSQL/firebird/pull/7445): Fix problem with client-only build requiring _btyacc's_ generated files present
Contributor(s): Adriano dos Santos Fernandes
* [#7387](https://github.com/FirebirdSQL/firebird/issues/7387): Unreliable replication behaviour in Linux Classic
Contributor(s): Dmitry Yemanov
* [#7233](https://github.com/FirebirdSQL/firebird/pull/7233): Postfix for #5385 (CORE-5101): Fix slow database restore when Classic server mode is used
Contributor(s): Ilya Eremin
# v5.0 Beta 1 (27-Mar-2023)
## New features

View File

@ -3,7 +3,7 @@
# Run this to generate all the initial makefiles, etc.
#
PKG_NAME=Firebird5
PKG_NAME=Firebird6
SRCDIR=`dirname $0`
if [ -z "$AUTORECONF" ]

View File

@ -4,31 +4,30 @@ FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2022
SHELL ["cmd", "/S", "/C"]
# set visualstudio2019buildtools --version and --installChannelUri.
#
# Open https://docs.microsoft.com/en-us/visualstudio/releases/2019/history#installing-an-earlier-release
# Download BuildTools for a specific version.
# Open (extract) the downloaded file.
# Open file vs_setup_bootstrapper.json and extract the installChannelUri value.
#
# 16.11.6.0 - https://aka.ms/vs/16/release/201528995_-1285443981/channel
# 16.11.7.0 - https://aka.ms/vs/16/release/152566872_220409660/channel
# 16.11.16 - https://aka.ms/vs/16/release/377566269_-1382739058/channel
# Installation of specific Visual Studio build tools version:
# - Open https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-history
# - Download BuildTools for a specific version.
# - Open (extract) the downloaded file, for example using 7-Zip.
# - Open file vs_setup_bootstrapper.json and extract the installChannelUri to VS_INSTALL_CHANNEL_URI.
# 17.7.4
ARG VS_INSTALL_CHANNEL_URI=https://aka.ms/vs/17/release/134599118_118780349/channel
ADD https://aka.ms/vs/17/release/vs_buildtools.exe C:/temp/vs_BuildTools.exe
RUN `
set chocolateyUseWindowsCompression='false' && `
powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && `
set "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin" && `
`
choco install --no-progress --yes visualstudio2019buildtools --version=16.11.16 --package-parameters " `
--installChannelUri https://aka.ms/vs/16/release/377566269_-1382739058/channel `
--quiet --wait --norestart --nocache `
(start /w C:\temp\vs_BuildTools.exe `
--installPath C:\VisualStudio `
--channelUri %VS_INSTALL_CHANNEL_URI% `
--installChannelUri %VS_INSTALL_CHANNEL_URI% `
--quiet --wait --norestart --nocache --noUpdateInstaller `
--locale en-US `
--add Microsoft.Component.MSBuild `
--add Microsoft.VisualStudio.Component.VC.ATLMFC `
--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 `
--add Microsoft.VisualStudio.Component.VC.CMake.Project `
--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 `
--add Microsoft.VisualStudio.Component.VC.Redist.14.Latest `
--add Microsoft.VisualStudio.Component.VC.Redist.MSM `
--add Microsoft.VisualStudio.Component.Windows10SDK.19041 `
--add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core `
--add Microsoft.VisualStudio.Workload.NativeDesktop `
@ -36,15 +35,22 @@ RUN `
--remove Microsoft.VisualStudio.Component.Windows10SDK.10586 `
--remove Microsoft.VisualStudio.Component.Windows10SDK.14393 `
--remove Microsoft.VisualStudio.Component.Windows81SDK `
" && `
|| if "%ERRORLEVEL%"=="3010" exit 0) && `
`
set chocolateyUseWindowsCompression='false' && `
powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && `
set "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin" && `
`
choco install --no-progress --yes git --version=2.33.1 && `
choco install --no-progress --yes 7zip.install --version=19.0 && `
choco install --no-progress --yes innosetup --version=6.1.2 && `
choco install --no-progress --yes wixtoolset --version=3.11.2 && `
`
refreshenv && `
setx PATH "%PATH%;C:\Program Files\Git\usr\bin"
ENV SEVENZIP='C:\Program Files\7-Zip'
ENV INNO6_SETUP_PATH='C:\Program Files (x86)\Inno Setup 6'
ENV WIX='C:\Program Files (x86)\WiX Toolset v3.11'
COPY scripts\* C:\fbscripts\

View File

@ -1,6 +1,6 @@
@echo off
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat" -arch=amd64
call C:\VisualStudio\Common7\Tools\VsDevCmd.bat -arch=amd64
set FB_PROCESSOR_ARCHITECTURE=AMD64

View File

@ -1,6 +1,6 @@
@echo off
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat" -arch=x86
call C:\VisualStudio\Common7\Tools\VsDevCmd.bat -arch=x86
set FB_PROCESSOR_ARCHITECTURE=x86
@ -12,3 +12,4 @@ call run_all.bat PDB
call run_tests.bat
copy C:\firebird-build\builds\install_images\* C:\firebird\builds\install_images
xcopy /h /e /i /q C:\firebird-build\output_Win32_release C:\firebird\output_Win32_release

View File

@ -19,8 +19,8 @@ runAndCheckExit() {
}
runAndCheckExit "Build messages file (firebird.msg)" "./build_file -f firebird.msg"
runAndCheckExit "Creating security database" "echo create database \'security5.fdb\'^ | ./isql -q -term ^"
runAndCheckExit "Creating security database metadata" "./isql -q security5.fdb -i security.sql"
runAndCheckExit "Creating security database" "echo create database \'security6.fdb\'^ | ./isql -q -term ^"
runAndCheckExit "Creating security database metadata" "./isql -q security6.fdb -i security.sql"
#runAndCheckExit "Restore examples database (employee)" "(cd examples/empbuild ; ../.././isql -q -i ../../employe2.sql)"
rm -f security.sql employe2.sql ./build_file AfterUntar.sh

View File

@ -46,7 +46,7 @@ $ANDROID_HOME/platform-tools/adb -s $AndroidDeviceName shell "(cd $AndroidDir &&
$ANDROID_HOME/platform-tools/adb -s $AndroidDeviceName shell "(cd $AndroidDir/firebird && ./common_test --log_level=all && ./libEngine13_test --log_level=all)"
$ANDROID_HOME/platform-tools/adb -s $AndroidDeviceName shell "(cd $AndroidDir/firebird && ./AfterUntar.sh)"
$ANDROID_HOME/platform-tools/adb -s $AndroidDeviceName pull $AndroidDir/firebird/firebird.msg gen/Release/firebird/
$ANDROID_HOME/platform-tools/adb -s $AndroidDeviceName pull $AndroidDir/firebird/security5.fdb gen/Release/firebird/
$ANDROID_HOME/platform-tools/adb -s $AndroidDeviceName pull $AndroidDir/firebird/security6.fdb gen/Release/firebird/
#$ANDROID_HOME/platform-tools/adb -s $AndroidDeviceName pull $AndroidDir/firebird/examples/empbuild/employe2.fdb gen/Release/firebird/examples/empbuild/
$ANDROID_HOME/platform-tools/adb -s $AndroidDeviceName shell "(rm -rf $AndroidDir)"

View File

@ -17,12 +17,12 @@ FB_VER_SUFFIX_M:=$(shell cpp -DDARWIN -I. ../builds/install/arch-specific/darwi
FB_MAJOR_VERS:=$(shell cpp -DDARWIN -I. ../builds/install/arch-specific/darwin/majorvers.c | tail -2 | sed -e 's/" "//g' -e 's/"//g')
FB_MINOR_VERS:=$(shell cpp -DDARWIN -I. ../builds/install/arch-specific/darwin/minorvers.c | tail -2 | sed -e 's/" "//g' -e 's/"//g')
FB_REV_NO:=$(shell cpp -DDARWIN -I. ../builds/install/arch-specific/darwin/revno.c | tail -2 | sed -e 's/" "//g' -e 's/"//g')
FB_BUILD_NO:=$(shell cpp -DDARWIN -I. ../builds/install/arch-specific/darwin/buildno.c | tail -2 | sed -e 's/" "//g' -e 's/"//g')
FB_PLATFORM:=$(CpuType)
BuildVersion=$(FirebirdVersion).$(BuildNum)
Version=$(BuildVersion)-$(PackageVersion)
package: package_firebird
package_firebird: INST_NM=Firebird-$(FB_MAJOR_VERS).$(FB_MINOR_VERS).$(FB_REV_NO)-$(FB_BUILD_NO)-macos-$(FB_PLATFORM)
package_firebird: INST_NM=Firebird-$(Version)-macos-$(CpuType)
package_firebird:
sed -e 's/_FB_BUILD_SUFFIX_/$(FB_VER_SUFFIX)/g' \
-e 's/_SMFB_BUILD_SUFFIX_/$(FB_VER_SUFFIX_SM)/g' \
@ -31,7 +31,7 @@ package_firebird:
-e 's/_MINOR_VERS_/$(FB_MINOR_VERS)/g' \
-e 's/_REV_NO_/$(FB_REV_NO)/g' \
../builds/install/arch-specific/darwin/Info.plist \
> $(ROOT)/gen/$(TARGET)/frameworks/Firebird5.framework/Resources/Info.plist
> $(ROOT)/gen/$(TARGET)/frameworks/Firebird6.framework/Resources/Info.plist
sed -e 's/_FB_BUILD_SUFFIX_/$(FB_VER_SUFFIX)/g' \
-e 's/_SMFB_BUILD_SUFFIX_/$(FB_VER_SUFFIX_SM)/g' \
-e 's/_MFB_BUILD_SUFFIX_/$(FB_VER_SUFFIX_M)/g' \
@ -39,7 +39,7 @@ package_firebird:
-e 's/_MINOR_VERS_/$(FB_MINOR_VERS)/g' \
-e 's/_REV_NO_/$(FB_REV_NO)/g' \
../builds/install/arch-specific/darwin/Description.plist \
> $(ROOT)/gen/$(TARGET)/frameworks/Firebird5.framework/Resources/Description.plist
> $(ROOT)/gen/$(TARGET)/frameworks/Firebird6.framework/Resources/Description.plist
rm -fr $(ROOT)/gen/$(TARGET)/scripts
mkdir $(ROOT)/gen/$(TARGET)/scripts
@ -63,7 +63,7 @@ package_firebird:
rm -fr $(TARGET)/packages
mkdir $(TARGET)/packages
pkgbuild --root $(ROOT)/gen/$(TARGET)/frameworks/Firebird5.framework \
pkgbuild --root $(ROOT)/gen/$(TARGET)/frameworks/Firebird6.framework \
--identifier com.firebirdsql.Firebird \
--install-location /Library/Frameworks/Firebird.framework \
--scripts $(ROOT)/gen/$(TARGET)/scripts \

View File

@ -74,7 +74,7 @@ chown -R firebird:firebird "$FB_FW"
# set the permissions correctly
echo "Set the permissions correctly"
chmod 777 "$FB_FW/Resources/"
chmod 660 "$FB_FW/Resources/security5.fdb"
chmod 660 "$FB_FW/Resources/security6.fdb"
# Remove all older traces of Classic first
echo "Remove all older traces of Classic first"
@ -95,7 +95,7 @@ fi
# Install the saved security database, if any
echo "Install the saved security database"
if test -f /tmp/fb-security-database-update5.fdb; then
mv -f /tmp/fb-security-database-update5.fdb "$FB_RES/security5.fdb"
mv -f /tmp/fb-security-database-update5.fdb "$FB_RES/security6.fdb"
rm -f /tmp/fb-security-database-update5.fdb
fi
@ -118,7 +118,7 @@ cp /tmp/UDF_Save/*.* $FB_RES/UDF/
rm -fr /tmp/UDF_save
# Test for saved security database
if test -f "$FB_RES/security5.fdb"; then
if test -f "$FB_RES/security6.fdb"; then
echo "Security database has been preserved"
fi

View File

@ -10,8 +10,8 @@
FB_FW="/Library/Frameworks/Firebird.framework"
FB_UDF="/Library/Frameworks/Firebird.framework/Resources/English.lproj/var/UDF"
if test -f "$FB_FW/Versions/A/Resources/English.lproj/var/security5.fdb"; then
mv -f "$FB_FW/Versions/A/Resources/English.lproj/var/security5.fdb" /tmp/fb-security-database-update5.fdb
if test -f "$FB_FW/Versions/A/Resources/English.lproj/var/security6.fdb"; then
mv -f "$FB_FW/Versions/A/Resources/English.lproj/var/security6.fdb" /tmp/fb-security-database-update5.fdb
fi
if test -f "$FB_FW/Versions/A/Resources/English.lproj/var/aliases.conf"; then

View File

@ -530,9 +530,17 @@ haveLibrary() {
# Fix .so version of libtommath
fixTomMath() {
tm1=`checkLibName libtommath.so.1 | awk '{print $4}'`
[ -z "$LIBTOMMATH" ] && return
if [ "$LIBTOMMATH" = "libtommath.so.1" ]
then
checklib=libtommath.so.0
else
checklib=libtommath.so.1
fi
tm1=`checkLibName $checklib | awk '{print $4}'`
[ -z "$tm1" ] && return
tm0=`dirname $tm1`/`basename $tm1 .1`.0
tm0=`dirname $tm1`/$LIBTOMMATH
[ -e "$tm0" ] && return
ln -s $tm1 $tm0
}

View File

@ -34,7 +34,7 @@ fb_install_prefix=@prefix@
BuildRootDir=..
BuiltFBDir=Release/firebird # Where the just build fb exists.
TargetDir=buildroot # Where we want to build the install image
SecurityDatabase=security5.fdb
SecurityDatabase=security6.fdb
TomMathBuild="@TOMMATH_BUILD@"
TomCryptBuild="@TOMCRYPT_BUILD@"
OBJDUMP=@OBJDUMP@
@ -57,6 +57,8 @@ addLibs() {
echo "#!/bin/sh" >>$libTarget
echo >>$libTarget
LIB=`$OBJDUMP -p $libSdir/firebird|grep NEEDED|grep tommath|awk '{print $2;}'`
[ "$LIB" ] && echo "export LIBTOMMATH=$LIB" >>$libTarget
LIB=`$OBJDUMP -p $libSdir/firebird|grep NEEDED|grep tomcrypt|awk '{print $2;}'`
[ "$LIB" ] && echo "export LIBTOMCRYPT=$LIB" >>$libTarget
LIB=$(echo `$OBJDUMP -p $libSdir/isql|grep NEEDED|egrep "(curses|termcap|tinfo)"|awk '{print $2;}'`)

View File

@ -74,14 +74,6 @@ if "%FB2_SNAPSHOT%"=="1" (
@echo o Checking for unix2dos...
(cmd /c "unix2dos.exe --version 2>&1 > nul" ) || ( call :ERROR Could not locate unix2dos && @goto :EOF )
@for /f "usebackq tokens=*" %%c in (`where /f touch 2^>nul`) do set TOUCH_COMMAND=%%c
if defined TOUCH_COMMAND (
@%TOUCH_COMMAND% --version <nul >nul 2>nul
if not ERRORLEVEL 1 (
@echo o POSIX touch utility found at %TOUCH_COMMAND%
) else ( @set TOUCH_COMMAND= )
)
@for /f "usebackq tokens=*" %%c in (`where /f md5sum 2^>nul`) do set MD5_COMMAND=%%c
if defined MD5_COMMAND (
@echo o POSIX md5sum utility found at %MD5_COMMAND%
@ -159,11 +151,13 @@ set /A FBBUILD_PACKAGE_NUMBER+=1
)
@echo Setting FBBUILD_PACKAGE_NUMBER to %FBBUILD_PACKAGE_NUMBER%
:: If a suffix is defined (usually for an RC) ensure it is prefixed correctly.
if defined FBBUILD_FILENAME_SUFFIX (
if not "%FBBUILD_FILENAME_SUFFIX:~0,1%"=="-" (
(set FBBUILD_FILENAME_SUFFIX=-%FBBUILD_FILENAME_SUFFIX%)
)
:: Generate FBBUILD_FILENAME_SUFFIX from FB_BUILD_SUFFIX and add prefix '-'
@for /f "tokens=3-5" %%a in ( "%FB_BUILD_SUFFIX%" ) do (
if "%%~a" == "Release" (
set FBBUILD_FILENAME_SUFFIX=-RC%%~c
) else (
set FBBUILD_FILENAME_SUFFIX=-%%~a%%~b
)
)
:: Set up our final destination
@ -494,34 +488,6 @@ endlocal
@goto :EOF
:TOUCH_ALL
::========
::Set file timestamp to something meaningful.
::While building and testing this feature might be annoying, so we don't do it.
::==========================================================
setlocal
if /I not "%FBBUILD_BUILDTYPE%"=="release" goto :EOF
if not defined TOUCH_COMMAND echo POSIX touch utility not found && exit /b 1
set TIMESTRING=0%FB_MAJOR_VER%:0%FB_MINOR_VER%:0%FB_REV_NO%
:: Perhaps here we should touch directories as well
:: Here and there XXX_COMMAND is "call"-ed in case if it is a batch file
@echo Touching release build files with %TIMESTRING% timestamp
@for /R %FB_OUTPUT_DIR% %%F in ( * ) do (
call %TOUCH_COMMAND% -c -d %TIMESTRING% %%F || exit /b 1
)
endlocal
::End of TOUCH_ALL
::----------------
@goto :EOF
:ISX_PACK
::=======
:: Now let's go and build the installable .exe
@ -714,13 +680,6 @@ if defined WIX (
@(@call :SET_CRLF ) || (@echo Error calling SET_CRLF && @goto :EOF)
@echo.
::@echo Creating .local files for libraries
::@(@call :TOUCH_LOCAL ) || (@echo Error calling TOUCH_LOCAL & @goto :END)
::@echo.
@(@call :TOUCH_ALL ) || (@echo Error calling TOUCH_ALL && @goto :END)
@echo.
if %FBBUILD_ZIP_PACK% EQU 1 (
@echo Zipping files for zip pack
@(@call :ZIP_PACK ) || (@echo Error calling ZIP_PACK && @goto :END)

View File

@ -488,8 +488,8 @@ Source: {#FilesDir}\fbtrace.conf; DestDir: {app}; DestName: fbtrace.conf; Compon
Source: {#FilesDir}\databases.conf; DestDir: {app}; Components: ClientComponent; Flags: uninsneveruninstall onlyifdoesntexist
Source: {#FilesDir}\replication.conf; DestDir: {app}; DestName: replication.conf.default; Components: ServerComponent;
Source: {#FilesDir}\replication.conf; DestDir: {app}; Components: ServerComponent; Flags: uninsneveruninstall onlyifdoesntexist; check: NoReplicationConfExists;
Source: {#FilesDir}\security5.fdb; DestDir: {app}; Destname: security5.fdb.empty; Components: ServerComponent;
Source: {#FilesDir}\security5.fdb; DestDir: {app}; Components: ServerComponent; Flags: uninsneveruninstall onlyifdoesntexist
Source: {#FilesDir}\security6.fdb; DestDir: {app}; Destname: security6.fdb.empty; Components: ServerComponent;
Source: {#FilesDir}\security6.fdb; DestDir: {app}; Components: ServerComponent; Flags: uninsneveruninstall onlyifdoesntexist
Source: {#FilesDir}\firebird.msg; DestDir: {app}; Components: ClientComponent; Flags: sharedfile ignoreversion
Source: {#FilesDir}\firebird.log; DestDir: {app}; Components: ServerComponent; Flags: uninsneveruninstall skipifsourcedoesntexist external dontcopy
@ -707,7 +707,7 @@ begin
// or
// (pos('/?',Uppercase(CommandLine)) > 0) or // InnoSetup displays its own help if these switches are passed.
// (pos('/H',Uppercase(CommandLine)) > 0) ) // Note also that our help scren only appears after the Choose Language dialogue :-(
then begin
then begin
ShowHelpDlg;
result := False;
Exit;
@ -877,26 +877,25 @@ begin
end;
function InitSecurityDB: Boolean;
var
AStringList: TStringList;
TempDir: String;
ResultCode: Integer;
CmdStr: string;
ResultCode: Integer;
CmdStr: string;
begin
TempDir := ExpandConstant( '{tmp}' );
CmdStr := ExpandConstant( '{app}\isql.exe' );
AStringList := TStringList.create;
with AStringList do begin
Add( 'create user ' + GetAdminUserName + ' password ''' + GetAdminUserPassword + ''' using plugin Srp;' );
Add( 'commit;' ); //Technically exit implies a commit so this not necessary. OTOH, explicitly committing makes for more readable code.
Add( 'exit;' );
SaveToFile( Tempdir +'\temp.sql' );
end;
Result := Exec( CmdStr , ' -m -m2 -user SYSDBA -i ' + TempDir + '\temp.sql -o ' + TempDir + '\temp.sql.txt employee ' , TempDir, SW_HIDE, ewWaitUntilTerminated, ResultCode );
DeleteFile( TempDir + +'\temp.sql ');
TempDir := ExpandConstant( '{tmp}' );
CmdStr := ExpandConstant( '{app}\isql.exe' );
AStringList := TStringList.create;
with AStringList do begin
Add( 'create user ' + GetAdminUserName + ' password ''' + GetAdminUserPassword + ''' using plugin Srp;' );
Add( 'commit;' ); //Technically exit implies a commit so this not necessary. OTOH, explicitly committing makes for more readable code.
Add( 'exit;' );
SaveToFile( Tempdir +'\temp.sql' );
end;
Result := Exec( CmdStr , ' -m -m2 -user SYSDBA -i ' + TempDir + '\temp.sql -o ' + TempDir + '\temp.sql.txt employee ' , TempDir, SW_HIDE, ewWaitUntilTerminated, ResultCode );
DeleteFile( TempDir + '\temp.sql');
DeleteFile( TempDir + '\temp.sql.txt');
end;
@ -980,16 +979,16 @@ begin
// These attempts to modify firebird.conf may not survice repeated installs.
if WizardIsTaskSelected('UseClassicServerTask') then
ReplaceLine(GetAppPath+'\firebird.conf','ServerMode = ','ServerMode = Classic','#');
if WizardIsTaskSelected('UseClassicServerTask') then
ReplaceLine(GetAppPath+'\firebird.conf','ServerMode = ','ServerMode = Classic','#');
if WizardIsTaskSelected('UseSuperClassicTask') then
ReplaceLine(GetAppPath+'\firebird.conf','ServerMode = ','ServerMode = SuperClassic','#');
ReplaceLine(GetAppPath+'\firebird.conf','ServerMode = ','ServerMode = SuperClassic','#');
if WizardIsTaskSelected('UseSuperServerTask') then
ReplaceLine(GetAppPath+'\firebird.conf','ServerMode = ','ServerMode = Super','#');
if WizardIsTaskSelected('UseSuperServerTask') then
ReplaceLine(GetAppPath+'\firebird.conf','ServerMode = ','ServerMode = Super','#');
end;
end;
end;
end;
@ -1012,16 +1011,16 @@ var
begin
//Do resize only once!
if wizardform.height = initWizardHeight then begin
AHeight := HEIGHT_INCREASE;
AWidth := WIDTH_INCREASE;
AHeight := HEIGHT_INCREASE;
AWidth := WIDTH_INCREASE;
if not Increase then begin
AHeight := (AHeight * (-1));
AWidth := (AWidth * (-1));
end;
if not Increase then begin
AHeight := (AHeight * (-1));
AWidth := (AWidth * (-1));
end;
SetupWizardFormComponentsArrays;
ResizeWizardFormHeight(AHeight);
SetupWizardFormComponentsArrays;
ResizeWizardFormHeight(AHeight);
// ResizeWizardFormWidth(AWidth);
end;
end;
@ -1045,9 +1044,8 @@ var
AppStr: String;
ReadMeFileStr: String;
begin
case CurStep of
case CurStep of
ssInstall: begin
// RenamePreFB3RC1Files;
SetupSharedFilesArray;
GetSharedLibCountBeforeCopy;
end;
@ -1058,7 +1056,7 @@ begin
IncrementSharedCount(Is64BitInstallMode, GetAppPath+'\firebird.log', false);
IncrementSharedCount(Is64BitInstallMode, GetAppPath+'\databases.conf', false);
IncrementSharedCount(Is64BitInstallMode, GetAppPath+'\fbtrace.conf', false);
IncrementSharedCount(Is64BitInstallMode, GetAppPath+'\security5.fdb', false);
IncrementSharedCount(Is64BitInstallMode, GetAppPath+'\security6.fdb', false);
IncrementSharedCount(Is64BitInstallMode, GetAppPath+'\replication.conf', false);
InitSecurityDB;
@ -1106,7 +1104,7 @@ end;
// # FIXME - we can probably remove this function
function ChooseUninstallIcon(Default: String): String;
begin
result := GetAppPath+'\firebird.exe';
result := GetAppPath+'\firebird.exe';
end;
//InnoSetup has a Check Parameter that allows installation if the function returns true.
@ -1184,8 +1182,8 @@ begin
aStringList.add(appPath+'\firebird.log');
aStringList.add(appPath+'\databases.conf');
aStringList.add(appPath+'\fbtrace.conf');
aStringList.add(appPath+'\security5.fdb');
aStringList.add(appPath+'\security5.fdb.old');
aStringList.add(appPath+'\security6.fdb');
aStringList.add(appPath+'\security6.fdb.old');
aStringList.add(appPath+'\replication.conf');
for count := 0 to aStringList.count - 1 do begin
@ -1229,12 +1227,12 @@ end;
function NextButtonClick(CurPageID: Integer): Boolean;
var
i: integer;
i: integer;
begin
Result := True;
case CurPageID of
AdminUserPage.ID : begin
{ check user has entered new sysdba password correctly. }
{ check user has entered new sysdba password correctly. }
i := CompareStr(AdminUserPage.Values[0],AdminUserPage.Values[1]);
If not (i = 0) then begin
Result := False;
@ -1248,3 +1246,5 @@ end;
begin
end.
; kate: replace-tabs on; indent-width 2; tab-width 2; replace-tabs-save on; syntax Pascal;

View File

@ -795,7 +795,7 @@ else
SharedFileArray[27].Filename := ExpandConstant('{app}')+'databases.conf';
SharedFileArray[28].Filename := ExpandConstant('{app}')+'firebird.conf';
SharedFileArray[29].Filename := ExpandConstant('{app}')+'firebird.log';
SharedFileArray[30].Filename := ExpandConstant('{app}')+'security5.fdb';
SharedFileArray[30].Filename := ExpandConstant('{app}')+'security6.fdb';
SharedFileArray[31].Filename := ExpandConstant('{app}')+'fbtrace.conf';
SharedFileArray[32].Filename := ExpandConstant('{app}')+'fbsvcmgr.exe';
SharedFileArray[33].Filename := ExpandConstant('{app}')+'fbrmclib.dll';
@ -891,18 +891,8 @@ end;
function IsServerInstall: Boolean;
var
SetupType: String;
begin
// DOC NOTE - WizardSetupType is not well documented. If parameter is set to
// True the Description of the setup type is returned. (This is useless for us
// as our descriptions are I18n'ised. ) If set False the string declared in
// the TYPES section is returned. BUT LOWERCASED! Aargh!!
// To protect against future changes each side is the comparison is lowercased.
SetupType := WizardSetupType ( false );
if LowerCase( SetupType ) = LowerCase( 'ServerInstall' ) then
if WizardIsComponentSelected('ServerComponent') then
Result := true
else
Result := False;
@ -1201,7 +1191,7 @@ begin
LoadStringFromFile( GetAppPath+'\firebird.conf', FirebirdConfStr );
if pos('SharedDatabase', FirebirdConfStr) > 0 then begin
RenameFile(GetAppPath+'\firebird.conf', GetAppPath+'\firebird.conf.preRC1');
RenameFile(GetAppPath+'\security5.fdb', GetAppPath+'\security5.fdb.preRC1');
RenameFile(GetAppPath+'\security6.fdb', GetAppPath+'\security6.fdb.preRC1');
end
end
end;
@ -1213,7 +1203,7 @@ begin
if IsNotServerInstall then
Result := false
else
if FileExists(WizardDirValue + '\security5.fdb') then
if FileExists(WizardDirValue + '\security6.fdb') then
Result := false
else
Result := true;

View File

@ -17,7 +17,7 @@
Helper functions for FB installer
These are / ought to be fairly generic
It makes more sense if they are independant functions - ie, they don't
It makes more sense if they are independent functions - ie, they don't
call other functions in the script and they don't need to know about the
install script itself.
@ -53,7 +53,7 @@ Function Prototypes
function GetInstalledVersion(BinaryFile: String): Array of Integer;
function ConvertIBVerStrToFbVerStr( VerStr: String) : String;
function GetRegistryEntry(RegKey, RegEntry: string): String;
*)
(*

View File

@ -38,7 +38,7 @@ Pogledajte UNINSTALL sekciju ispod za vise informacija o ovome.
Ako ste instalirali beta ili alpha verziju
firebird-a, instalacija ce preimenovati firebird.conf i
security5.fdb jer ove datoteke vise nisu kompatibilne.
security6.fdb jer ove datoteke vise nisu kompatibilne.
Deployment gds32.dll
@ -69,7 +69,7 @@ Re-instalacija Firebird-a
Instalacioni program radi sve sto moze da detektuje i
sacuva prethodnu instalaciju. Ako instalacija detektuje
firebird.conf ili security5.fdb onda nece ponuditi
firebird.conf ili security6.fdb onda nece ponuditi
opciju da instalira legacy_auth. Niti ce ponuditi
opciju da postavi SYSDBA username i password.
@ -128,7 +128,7 @@ o Deinstalacija ostavlja 6 datoteka u install
- fbtrace.conf
- replication.conf
- firebird.log
- security5.fdb
- security6.fdb
Ovo je uradjeno namjerno. Ove datoteke su sve
potencijalno modifikovane od strane korisnika i mogu

View File

@ -38,7 +38,7 @@ viz část ODINSTALACE níže.
Máte-li nainstalovanou beta či alpha verzi
Firebirdu $MAJOR.$MINOR, instalátor přejmenuje firebird.conf
a security5.fdb, jelikož tyto soubory již nejsou kompatibilní.
a security6.fdb, jelikož tyto soubory již nejsou kompatibilní.
Instalace gds32.dll
@ -63,7 +63,7 @@ Reinstalace of Firebird $MAJOR.$MINOR
---------------------------
Instalační program dělá vše pro detekci a zachování předchozí instalace.
Jestliže instalátor rozpozná firebird.conf či security5.fdb, nebude
Jestliže instalátor rozpozná firebird.conf či security6.fdb, nebude
nabízet možnost instalace legacy_auth. Rovněž nebude nabízet
volbu pro nastavení hesla pro SYSDBA.
@ -123,7 +123,7 @@ o Odinstalace v instalační složce zanechá
- fbtrace.conf
- replication.conf
- firebird.log
- security5.fdb
- security6.fdb
To je záměr. Všechny tyto soubory jsou
potencionálně pozměnitelné uživatelem a

View File

@ -44,7 +44,7 @@ Il est particulièrement important de vérifier que
fbclient.dll et gds32.dll ont été retirés de <system32>.
Si vous avez installé une version beta ou alpha de Firebird $MAJOR.$MINOR,
l'installeur va renommer firebird.conf et security5.fdb, car ces
l'installeur va renommer firebird.conf et security6.fdb, car ces
fichiers ne sont plus compatibles avec la version actuelle.
@ -132,7 +132,7 @@ o La désinstallation laisse six fichiers dans le
- fbtrace.conf
- replication.conf
- firebird.log
- security5.fdb
- security6.fdb
Ceci est intentionnel. Ces fichiers sont tous
potentiellement modifiables par les utilisateurs et peuvent

View File

@ -52,7 +52,7 @@ Re-installation of Firebird
The binary installer does its best to detect and
preserve a previous install. If the installer detects
firebird.conf or security5.fdb it will not offer the
firebird.conf or security6.fdb it will not offer the
option to set the SYSDBA username and password.
@ -112,7 +112,7 @@ o Uninstallation leaves six files in the install
- fbtrace.conf
- replication.conf
- firebird.log
- security5.fdb
- security6.fdb
This is intentional. These files are all
potentially modifiable by users and may be required

View File

@ -147,7 +147,7 @@ Parameters specific to Firebird uninstalls
firebird.conf
databases.conf
firebird.log
security5.fdb
security6.fdb
fbtrace.conf
replication.conf

View File

@ -36,7 +36,7 @@ o Установка из пакетного (bat) файла
каталога <system32>.
Если у вас установлена Альфа или Бета версия Firebird $MAJOR.$MINOR,
то программа установки переименует файлы firebird.conf и security5.fdb
то программа установки переименует файлы firebird.conf и security6.fdb
из-за их несовместимости с устанавливаемой версией.
@ -67,7 +67,7 @@ MS VC runtime версии 10.0 установлены в системе.
Программа установки пытается обнаружить и сохранить ранее установленную
версию Firebird. Если программа установки обнаруживает файлы firebird.conf
или security5.fdb, то некоторые настройки авторизации могут быть недоступны,
или security6.fdb, то некоторые настройки авторизации могут быть недоступны,
в частности возможность установить пароль пользователя SYSDBA.
@ -124,7 +124,7 @@ o Деинсталлятор оставляет следующие файлы в
- fbtrace.conf
- replication.conf
- firebird.log
- security5.fdb
- security6.fdb
Это происходит намеренно. Эти файлы потенциально
могут быть изменены пользователем и могут

View File

@ -24,7 +24,7 @@ employee = $(dir_sampleDb)/employee.fdb
# Master security database specific setup.
# Do not remove it until you understand well what are you doing!
#
security.db = $(dir_secDb)/security5.fdb
security.db = $(dir_secDb)/security6.fdb
{
RemoteAccess = false
DefaultDbCachePages = 256

File diff suppressed because it is too large Load Diff

View File

@ -85,7 +85,7 @@ OrigPasswd=""
TmpFile=""
MANIFEST_TXT=""
Manifest=manifest.txt
SecurityDatabase=security5.fdb
SecurityDatabase=security6.fdb
DefaultLibrary=libfbclient
UninstallScript=FirebirdUninstall.sh
XINETD=/etc/xinetd.d/
@ -222,11 +222,12 @@ checkLibrary() {
#------------------------------------------------------------------------
# Make sure we have required libraries installed
checkLibraries() {
if [ "@TOMMATH_BUILD@" != "Y" -o "${fb_install_prefix}" != "${default_prefix}" ]
# if [ "@TOMMATH_BUILD@" != "Y" -o "${fb_install_prefix}" != "${default_prefix}" ]
if [ "@TOMMATH_BUILD@" != "Y" ]
then
fixTommath=
checkLibrary tommath
haveLibrary libtommath.so.0 || [ "$fixTommath" ] && $fixTommath
checkLibrary tommath # Should have at least some version of it
[ $LIBTOMMATH ] && haveLibrary $LIBTOMMATH || [ "$fixTommath" ] && $fixTommath
fi
# if [ "@TOMCRYPT_BUILD@" != "Y" -o "${fb_install_prefix}" != "${default_prefix}" ]

View File

@ -490,7 +490,7 @@ gpre: $(GPRE) databases
$(GPRE): $(GPRE_Objects) $(COMMON_LIB)
$(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS)
SECURITY_FDB = $(FIREBIRD)/security5.fdb
SECURITY_FDB = $(FIREBIRD)/security6.fdb
SECURITY_TMP = security.tmp
databases: yachts.lnk $(SECURITY_FDB)
@ -596,6 +596,9 @@ isql: $(ISQL)
$(ISQL): $(ISQL_Objects) $(COMMON_LIB)
$(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LIBEDITLINE) $(TERMLIB) $(LINK_LIBS)
$(ISQL_TEST): $(filter-out $(call makeObjects,isql,main.cpp), $(ISQL_Objects)) $(ISQL_Test_Objects) $(COMMON_LIB)
$(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LIBEDITLINE) $(TERMLIB) $(LINK_LIBS)
nbackup: $(NBACKUP)
$(NBACKUP): $(NBACKUP_Objects) $(COMMON_LIB)
@ -787,17 +790,20 @@ install install-embedded silent_install package packages dist:
.PHONY: tests tests_process run_tests run_tests_process
log_level ?= all
tests:
$(MAKE) TARGET?=$(DefaultTarget) tests_process
tests_process: $(COMMON_TEST) $(ENGINE_TEST)
tests_process: $(COMMON_TEST) $(ENGINE_TEST) $(ISQL_TEST)
run_tests:
$(MAKE) TARGET?=$(DefaultTarget) run_tests_process
$(MAKE) TARGET?=$(DefaultTarget) LOG_LEVEL?=$(log_level) run_tests_process
run_tests_process: tests_process
$(COMMON_TEST) --log_level=all
$(ENGINE_TEST) --log_level=all
$(COMMON_TEST) --log_level=$(LOG_LEVEL)
$(ENGINE_TEST) --log_level=$(LOG_LEVEL)
$(ISQL_TEST) --log_level=$(LOG_LEVEL)
#___________________________________________________________________________
@ -820,6 +826,7 @@ clean_vers:
clean_misc:
$(RM) security.tmp test.header.txt
$(RM) $(TMP_FUNCS_PAS) $(RPL_AWK) $(RPL_GREP)
$(TOUCH) -c -t 200001010000 $(API_H_FILE) $(API_PAS_FILE)
ifeq ($(EDITLINE_FLG),Y)
@ -909,7 +916,7 @@ clean_gpre_gen:
-$(RM) -f `find $(TMP_ROOT)/ -type f -name '*.cpp' -print`
clean_yacc_gen:
$(RM) $(ROOT)/src/dsql/parse.cpp $(ROOT)/src/dsql/dsql.tab.h types.y y.*
$(RM) $(ROOT)/src/dsql/parse.cpp $(ROOT)/src/dsql/dsql.tab.h types.y y.* $(OBJ)/.parse-gen-sentinel
#___________________________________________________________________________
# Extra platform specific targets

View File

@ -4,22 +4,22 @@
# version 2.1 of the License, or (at your option) any later version.
# You may obtain a copy of the Licence at
# http://www.gnu.org/licences/lgpl.html
#
#
# As a special exception this file can also be included in modules
# with other source code as long as that source code has been
# released under an Open Source Initiative certificed licence.
# More information about OSI certification can be found at:
# http://www.opensource.org
#
# with other source code as long as that source code has been
# released under an Open Source Initiative certificed licence.
# More information about OSI certification can be found at:
# http://www.opensource.org
#
# This module is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public Licence for more details.
#
# This module was created by members of the firebird development
# team. All individual contributions remain the Copyright (C) of
# those individuals and all rights are reserved. Contributors to
# this file are either listed below or can be obtained from a CVS
#
# This module was created by members of the firebird development
# team. All individual contributions remain the Copyright (C) of
# those individuals and all rights are reserved. Contributors to
# this file are either listed below or can be obtained from a CVS
# history command.
#
# Created by: Mark O'Donohue <mark.odonohue@ludwig.edu.au>
@ -36,14 +36,20 @@ else
DefaultTarget := Release
endif
CPPFLAGS+= -I$(FB_BUILD)/include
CPPFLAGS += -std=c++17 -I$(FB_BUILD)/include
include $(ROOT)/gen/make.defaults
ifeq ($(CROSS_OUT), Y)
include $(ROOT)/gen/make.crossPlatform
else
include $(ROOT)/gen/make.platform
endif
ifeq ($(PLATFORM),DARWIN)
CPPFLAGS += -stdlib=libc++
endif
include $(ROOT)/gen/make.rules
include $(ROOT)/gen/make.shared.variables

View File

@ -19,14 +19,11 @@
# Options
#FirebirdInstallPrefix=
LIB_BUNDLE_OPTIONS=$(LD_FLAGS) -bundle -flat_namespace -undefined suppress
LIB_LINK_OPTIONS=$(LD_FLAGS) -dynamiclib -flat_namespace
LIB_BUNDLE_OPTIONS=$(LD_FLAGS) -bundle
LIB_LINK_OPTIONS=$(LD_FLAGS) -dynamiclib
LIB_LINK_SONAME:=-current_version @FIREBIRD_VERSION@ -compatibility_version @FIREBIRD_VERSION@ -seg1addr 0x30000000
LIB_LINK_MAPFILE=-Wl,-exported_symbols_list,$(1)
#EXE_LINK_OPTIONS+=-dylib_file /Library/Frameworks/Firebird.framework/Versions/A/Firebird ../gen/Release/firebird/lib/libfbclient.dylib
#LIB_LINK_RPATH:=-dylib_file /Library/Frameworks/Firebird.framework/Versions/A/Firebird ../gen/Release/firebird/lib/libfbclient.dylib
ADD_LIBS:=-lobjc -framework Foundation -framework Security
LINK_LIBS += $(ADD_LIBS)
STATICLINK_LIBS += $(ADD_LIBS)

View File

@ -19,5 +19,3 @@
#
# All Rights Reserved.
# Contributor(s): ______________________________________.
main

View File

@ -199,16 +199,16 @@ READELF = @READELF@
AC_CFLAGS = @CFLAGS@
AC_CXXFLAGS = @CXXFLAGS@
AC_LDFLAGS = @LDFLAGS@
# LINKER COMMANDS
# FIXME: -static-libstdc++ in MacOS
ifeq ($(PLATFORM),DARWIN)
LIB_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS)
EXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS)
LIB_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS) $(WLDFLAGS)
EXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS) $(WLDFLAGS)
else
LIB_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS) -static-libstdc++
EXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS) -static-libstdc++
LIB_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS) $(WLDFLAGS) -static-libstdc++
EXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS) $(WLDFLAGS) -static-libstdc++
endif
STATICLIB_LINK = $(AR) crus
@ -420,10 +420,11 @@ FBGUARD = $(BIN)/fbguard$(EXEC_EXT)
INSTREG = $(BIN)/instreg$(EXEC_EXT)
INSTSVC = $(BIN)/instsvc$(EXEC_EXT)
SECURITY_FDB = $(FIREBIRD)/security5.fdb
SECURITY_FDB = $(FIREBIRD)/security6.fdb
# From isql
ISQL = $(BIN)/isql$(EXEC_EXT)
ISQL_TEST = $(FB_TESTS_DIR)/isql_test$(EXEC_EXT)
RUN_ISQL = $(RBIN)/isql$(EXEC_EXT)
# From burp

View File

@ -68,6 +68,7 @@ endif
WCFLAGS = $(WFLAGS) $(CFLAGS) $(AC_CFLAGS) $(GLOB_OPTIONS)
WCXXFLAGS = $(WFLAGS) $(PLUSPLUS_FLAGS) $(PLATFORM_PLUSPLUS_FLAGS) $(CXXFLAGS) $(AC_CXXFLAGS) $(GLOB_OPTIONS)
WLDFLAGS = $(LDFLAGS) $(AC_LDFLAGS)
# Here we have definitions for using the preprocessor.

View File

@ -40,9 +40,11 @@
# MOD 07-Oct-2002
# This rule creates parse.cpp from parse.y
# With make 4.3 this can be simplified with a simple group target (&:) dependency.
$(OBJ)/dsql/parse.cpp: $(SRC_ROOT)/include/gen/parse.h
$(OBJ)/dsql/parse.cpp $(SRC_ROOT)/include/gen/parse.h: $(SRC_ROOT)/dsql/parse.y $(SRC_ROOT)/dsql/btyacc_fb.ske
$(OBJ)/dsql/parse.cpp $(SRC_ROOT)/include/gen/parse.h: $(OBJ)/.parse-gen-sentinel ;
$(OBJ)/.parse-gen-sentinel: $(SRC_ROOT)/dsql/parse.y $(SRC_ROOT)/dsql/btyacc_fb.ske
sed -n '/%type .*/p' < $< > $(GEN_ROOT)/types.y
sed 's/%type .*//' < $< > $(GEN_ROOT)/y.y
($(BTYACC) -l -d -S $(SRC_ROOT)/dsql/btyacc_fb.ske $(GEN_ROOT)/y.y; echo $$? > $(GEN_ROOT)/y.status) 2>&1 | tee $(GEN_ROOT)/y.txt
@ -52,7 +54,7 @@ $(OBJ)/dsql/parse.cpp $(SRC_ROOT)/include/gen/parse.h: $(SRC_ROOT)/dsql/parse.y
sed -i -e 's/#define TOK_YY\(.*\)/#define YY\1/' $(GEN_ROOT)/y_tab.h
$(MV) $(GEN_ROOT)/y_tab.h $(SRC_ROOT)/include/gen/parse.h
$(MV) $(GEN_ROOT)/y_tab.c $(OBJ)/dsql/parse.cpp
touch $(OBJ)/dsql/parse.cpp
touch $@
# gpre_meta needs a special boot build since there is no database.
@ -62,7 +64,7 @@ $(SRC_ROOT)/gpre/gpre_meta.cpp: $(SRC_ROOT)/gpre/gpre_meta.epp
# Explicit dependence on generated header (parser)
$(OBJ)/dsql/Parser.o $(OBJ)/common/keywords.o $(OBJ)/dsql/dsql.o: $(SRC_ROOT)/include/gen/parse.h
$(OBJ)/dsql/Parser.o $(OBJ)/dsql/Keywords.o $(OBJ)/dsql/dsql.o: $(SRC_ROOT)/include/gen/parse.h
# Special cases for building cpp from epp
$(OBJ)/dsql/metd.cpp: $(SRC_ROOT)/dsql/metd.epp

View File

@ -87,7 +87,8 @@ AllObjects += $(Profiler_Objects)
# Engine
Engine_Objects:= $(call dirObjects,jrd) $(call dirObjects,dsql) $(call dirObjects,jrd/extds) \
$(call dirObjects,jrd/optimizer) $(call dirObjects,jrd/recsrc) $(call dirObjects,jrd/replication) $(call dirObjects,jrd/trace) \
$(call dirObjects,jrd/optimizer) $(call dirObjects,jrd/recsrc) $(call dirObjects,jrd/replication) \
$(call dirObjects,jrd/sys-packages) $(call dirObjects,jrd/trace) \
$(call makeObjects,lock,lock.cpp)
Engine_Test_Objects:= $(call dirObjects,jrd/tests)
@ -178,7 +179,9 @@ AllObjects += $(GSPLIT_Objects)
# Interactive sql
ISQL_Objects:= $(call dirObjects,isql)
AllObjects += $(ISQL_Objects)
ISQL_Test_Objects:= $(call dirObjects,isql/tests)
AllObjects += $(ISQL_Objects) $(ISQL_Test_Objects)
# Legacy users management in security database

View File

@ -19,9 +19,7 @@
# 2 Oct 2002, Nickolay Samofatov - Major Cleanup
TARGET ?= Release
ICU_VERS = icu54
ICU_LOC ?= $(HOME)/$(ICU_VERS)/icu/source/lib/
FB_FW = ../gen/$(TARGET)/frameworks/Firebird5.framework
FB_FW = ../gen/$(TARGET)/frameworks/Firebird6.framework
all: framework
@ -29,9 +27,7 @@ framework:
-$(RM) -rf $(FB_FW)
mkdir -p $(FB_FW)/Versions/A/Libraries
cp $(ICU_LOC)*.dylib ../gen/$(TARGET)/firebird/lib/
ln -s Versions/Current/Firebird $(FB_FW)/Firebird
ln -s Versions/Current/Libraries/libfbclient.dylib $(FB_FW)/Firebird
ln -s Versions/Current/Headers $(FB_FW)/Headers
ln -s Versions/Current/Resources $(FB_FW)/Resources
ln -s Versions/Current/Libraries $(FB_FW)/Libraries
@ -53,7 +49,7 @@ framework:
cp ../gen/$(TARGET)/firebird/intl/fbintl.conf $(FB_FW)/Versions/A/Resources/intl/fbintl.conf
#chmod a+rx $(FB_FW)/Versions/A/Resources/intl/fbintl
cp -r ../gen/$(TARGET)/firebird/plugins $(FB_FW)/Versions/A/Resources/plugins
cp ../gen/$(TARGET)/firebird/security5.fdb $(FB_FW)/Versions/A/Resources/security5.fdb
cp ../gen/$(TARGET)/firebird/security6.fdb $(FB_FW)/Versions/A/Resources/security6.fdb
cp ../gen/$(TARGET)/firebird/firebird.msg $(FB_FW)/Versions/A/Resources/firebird.msg
cp -r ../gen/$(TARGET)/firebird/tzdata $(FB_FW)/Versions/A/Resources/tzdata
mkdir -p $(FB_FW)/Resources/doc

View File

@ -38,7 +38,7 @@ export MACOSX_DEPLOYMENT_TARGET
PROD_FLAGS=-DDARWIN -DARM64 -pipe -O2 -MMD -fPIC -fno-common -mmacosx-version-min=11.0
DEV_FLAGS=-ggdb -DDARWIN -DARM64 -pipe -MMD -fPIC -fno-omit-frame-pointer -fno-common -Wall -fno-optimize-sibling-calls -mmacosx-version-min=11.0 -Wno-non-virtual-dtor
CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden -stdlib=libc++
CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden
UNDEF_PLATFORM=

View File

@ -33,7 +33,7 @@ export MACOSX_DEPLOYMENT_TARGET
PROD_FLAGS=-O1 -DDARWIN -pipe -MMD -fPIC -fno-common -mmacosx-version-min=10.7
DEV_FLAGS=-ggdb -DDARWIN -pipe -MMD -fPIC -fno-omit-frame-pointer -fno-common -Werror=delete-incomplete -Wall -fno-optimize-sibling-calls -mmacosx-version-min=10.7 -Wno-non-virtual-dtor
CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden -stdlib=libc++ -msse4
CXXFLAGS:=$(CXXFLAGS) -fvisibility-inlines-hidden -fvisibility=hidden -msse4
LD_FLAGS+=-liconv
FIREBIRD_LIBRARY_LINK+=-liconv

View File

@ -22,10 +22,10 @@ COMMON_FLAGS=-ggdb -DFB_SEND_FLAGS=MSG_NOSIGNAL -DLINUX -DAMD64 -pipe -MMD -fPIC
OPTIMIZE_FLAGS=-O3 -fno-omit-frame-pointer
WARN_FLAGS=-Werror=delete-incomplete -Wall -Wno-switch -Wno-parentheses -Wno-unknown-pragmas -Wno-unused-variable -Wno-narrowing -Wno-unused-local-typedefs
PLATFORM_PLUSPLUS_FLAGS=-Wno-invalid-offsetof -Wno-class-memaccess
#VALGRIND_FLAGS=-DUSE_VALGRIND
PROD_FLAGS=$(COMMON_FLAGS) $(OPTIMIZE_FLAGS)
#DEV_FLAGS=-DUSE_VALGRIND $(WARN_FLAGS) $(COMMON_FLAGS) -fmax-errors=8
DEV_FLAGS=$(WARN_FLAGS) $(COMMON_FLAGS) -fmax-errors=8
DEV_FLAGS=$(VALGRIND_FLAGS) $(WARN_FLAGS) $(COMMON_FLAGS) -fmax-errors=8
# This file must be compiled with SSE4.2 support
%/CRC32C.o: COMMON_FLAGS += -msse4

View File

@ -0,0 +1,28 @@
# 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): ______________________________________.
# Start of file prefix.linux: $(VERSION) $(PLATFORM)
# 14 Apr 2008 Alan Barclay alan AT escribe.co.uk
# 2018, "Manuel A. Fernandez Montecelo" <manuel.montezelo@gmail.com>
#LD=@CXX@
#PROD_FLAGS=-ggdb -O3 -fno-omit-frame-pointer -DLINUX -pipe -MMD -fPIC
#DEV_FLAGS=-ggdb -DLINUX -DDEBUG_GDS_ALLOC -pipe -MMD -p -fPIC -Werror=delete-incomplete -Wall -Wno-switch
PROD_FLAGS=-O3 -DLINUX -DLOONGARCH -pipe -p -MMD -fPIC -fsigned-char -fmessage-length=0 -std=gnu++03 -fno-delete-null-pointer-checks
DEV_FLAGS=-ggdb -DLINUX -DLOONGARCH -pipe -p -MMD -fPIC -Werror=delete-incomplete -Wall -fsigned-char -fmessage-length=0 -Wno-non-virtual-dtor

View File

@ -66,7 +66,7 @@ if errorlevel 1 call :ERROR build failed - see make_all_%FB_TARGET_PLATFORM%.log
copy %FB_ROOT_PATH%\temp\%FB_OBJ_DIR%\ib_util\ib_util.lib %FB_OUTPUT_DIR%\lib\ib_util_ms.lib >nul
)
for %%v in (gpre_boot build_msg common_test engine_test) do (
for %%v in (gpre_boot build_msg common_test engine_test isql_test) do (
@del %FB_OUTPUT_DIR%\%%v.* 2>nul
)
@ -85,7 +85,7 @@ for %%v in (gpre_boot build_msg common_test engine_test) do (
copy %FB_ROOT_PATH%\src\plugins\udr_engine\udr_engine.conf %FB_OUTPUT_DIR%\plugins\udr_engine.conf >nul
:: DATABASES
copy %FB_GEN_DIR%\dbs\security5.FDB %FB_OUTPUT_DIR%\security5.fdb >nul
copy %FB_GEN_DIR%\dbs\security6.FDB %FB_OUTPUT_DIR%\security6.fdb >nul
:: DOCS
copy %FB_ROOT_PATH%\*.md %FB_OUTPUT_DIR%\doc\ >nul

View File

@ -11,6 +11,7 @@ set ERRLEV=0
@call setenvvar.bat %*
@if errorlevel 1 (goto :END)
@setlocal EnableDelayedExpansion
::===========
:MAIN
@ -29,37 +30,37 @@ for %%v in ( alice auth burp dsql gpre isql jrd misc msgs examples yvalve utilit
@mkdir %FB_BIN_DIR%\tzdata 2>nul
call :interfaces
if "%ERRLEV%"=="1" goto :END
if "!ERRLEV!"=="1" goto :END
call :LibTom
if "%ERRLEV%"=="1" goto :END
if "!ERRLEV!"=="1" goto :END
call :decNumber
if "%ERRLEV%"=="1" goto :END
if "!ERRLEV!"=="1" goto :END
if "%FB_TARGET_PLATFORM%"=="x64" call :ttmath
if "%ERRLEV%"=="1" goto :END
if "!ERRLEV!"=="1" goto :END
call :zlib
if "%ERRLEV%"=="1" goto :END
if "!ERRLEV!"=="1" goto :END
@if "%FB_CLIENT_ONLY%"=="" (
call :re2
if "%ERRLEV%"=="1" goto :END
if "!ERRLEV!"=="1" goto :END
call :btyacc
if "%ERRLEV%"=="1" goto :END
if "!ERRLEV!"=="1" goto :END
call :libcds
if "%ERRLEV%"=="1" goto :END
if "!ERRLEV!"=="1" goto :END
echo Generating DSQL parser...
call parse.bat %*
if "%ERRLEV%"=="1" goto :END
if "!ERRLEV!"=="1" goto :END
::=======
call :gpre_boot
if "%ERRLEV%"=="1" goto :END
if "!ERRLEV!"=="1" goto :END
::=======
echo Preprocessing the source files needed to build gpre and isql...
@ -67,13 +68,13 @@ if "%ERRLEV%"=="1" goto :END
::=======
call :engine
if "%ERRLEV%"=="1" goto :END
if "!ERRLEV!"=="1" goto :END
call :gpre
if "%ERRLEV%"=="1" goto :END
if "!ERRLEV!"=="1" goto :END
call :isql
if "%ERRLEV%"=="1" goto :END
if "!ERRLEV!"=="1" goto :END
)
@mkdir %FB_BIN_DIR% >nul 2>&1
@ -108,10 +109,11 @@ for %%v in (firebird plugins) do (
@if "%FB_CLIENT_ONLY%"=="" (
::=======
call :databases
if "!ERRLEV!"=="1" goto :END
:: copy security db if not exists already
if not exist %FB_BIN_DIR%\security5.fdb (
copy %FB_GEN_DIR%\dbs\security5.fdb %FB_BIN_DIR%
if not exist %FB_BIN_DIR%\security6.fdb (
copy %FB_GEN_DIR%\dbs\security6.fdb %FB_BIN_DIR%
)
::=======
@ -268,17 +270,29 @@ goto :EOF
@rmdir /s /q %FB_GEN_DIR%\dbs 2>nul
@mkdir %FB_GEN_DIR%\dbs 2>nul
@echo Create security5.fdb...
@echo create database '%FB_GEN_DB_DIR%\dbs\security5.fdb'; | "%FB_BIN_DIR%\isql" -q
@echo Create security6.fdb...
@echo create database '%FB_GEN_DB_DIR%\dbs\security6.fdb'; | "%FB_BIN_DIR%\isql" -q > nul
if errorlevel 1 call :boot2 databases & goto :EOF
@echo Apply security.sql...
@"%FB_BIN_DIR%\isql" -q %FB_GEN_DB_DIR%/dbs/security5.fdb -i %FB_ROOT_PATH%\src\dbs\security.sql
@mklink %FB_GEN_DIR%\dbs\security.fdb %FB_GEN_DIR%\dbs\security5.fdb
rem @copy %FB_GEN_DIR%\dbs\security5.fdb %FB_GEN_DIR%\dbs\security.fdb > nul
@"%FB_BIN_DIR%\isql" -q %FB_GEN_DB_DIR%/dbs/security6.fdb -i %FB_ROOT_PATH%\src\dbs\security.sql > nul
if errorlevel 1 call :boot2 databases & goto :EOF
@mklink %FB_GEN_DIR%\dbs\security.fdb %FB_GEN_DIR%\dbs\security6.fdb > nul
if errorlevel 1 (
@copy %FB_GEN_DIR%\dbs\security6.fdb %FB_GEN_DIR%\dbs\security.fdb > nul
)
if errorlevel 1 call :boot2 databases & goto :EOF
@echo Creating metadata.fdb...
@echo create database '%FB_GEN_DB_DIR%/dbs/metadata.fdb'; | "%FB_BIN_DIR%\isql" -q -sqldialect 1
@mklink %FB_GEN_DIR%\dbs\yachts.lnk %FB_GEN_DIR%\dbs\metadata.fdb
rem @copy %FB_GEN_DIR%\dbs\metadata.fdb %FB_GEN_DIR%\dbs\yachts.lnk > nul
@echo create database '%FB_GEN_DB_DIR%/dbs/metadata.fdb'; | "%FB_BIN_DIR%\isql" -q -sqldialect 1 > nul
if errorlevel 1 call :boot2 databases & goto :EOF
@mklink %FB_GEN_DIR%\dbs\yachts.lnk %FB_GEN_DIR%\dbs\metadata.fdb > nul
if errorlevel 1 (
@copy %FB_GEN_DIR%\dbs\metadata.fdb %FB_GEN_DIR%\dbs\yachts.lnk > nul
)
if errorlevel 1 call :boot2 databases
@goto :EOF
@ -291,3 +305,4 @@ rem @copy %FB_GEN_DIR%\dbs\metadata.fdb %FB_GEN_DIR%\dbs\yachts.lnk > nul
@goto :EOF
:END
endlocal

View File

@ -7,13 +7,31 @@
::==========
:: MAIN
@echo Extracting pre-built ICU
unzip -o %FB_ROOT_PATH%\extern\icu\icu_windows.zip -d %FB_ROOT_PATH%\extern\icu
unzip -o %FB_ROOT_PATH%\extern\icu\icudt.zip -d %FB_ROOT_PATH%\extern\icu
if errorlevel 1 call :ERROR build failed - see make_icu_%FB_TARGET_PLATFORM%.log for details
@echo Extracting pre-built ICU and tzdata
mkdir %FB_ROOT_PATH%\extern\icu\tzdata-extract 2> nul
@echo Extracting tzdata
unzip -o %FB_ROOT_PATH%\extern\icu\tzdata\le.zip -d %FB_ROOT_PATH%\extern\icu\tzdata-extract
:: FB_UNZIP could be set by caller, else try to find unzip in PATH or at the GIT folder
if not defined FB_UNZIP (
@for /f "tokens=*" %%a in ('where unzip.exe 2^> nul') do (@SET FB_UNZIP=%%a)
)
if not defined FB_UNZIP (
@for /f "tokens=*" %%a in ('where git 2^> nul') do (@SET FB_UNZIP=%%~dpa..\usr\bin\unzip.exe)
)
if not exist "%FB_UNZIP%" set FB_UNZIP=
if not defined FB_UNZIP (
cscript /nologo unzip.vbs %FB_ROOT_PATH%\extern\icu\icu_windows.zip %FB_ROOT_PATH%\extern\icu
cscript /nologo unzip.vbs %FB_ROOT_PATH%\extern\icu\icudt.zip %FB_ROOT_PATH%\extern\icu
cscript /nologo unzip.vbs %FB_ROOT_PATH%\extern\icu\tzdata\le.zip %FB_ROOT_PATH%\extern\icu\tzdata-extract
) else (
"%FB_UNZIP%" -o %FB_ROOT_PATH%\extern\icu\icu_windows.zip -d %FB_ROOT_PATH%\extern\icu
"%FB_UNZIP%" -o %FB_ROOT_PATH%\extern\icu\icudt.zip -d %FB_ROOT_PATH%\extern\icu
"%FB_UNZIP%" -o %FB_ROOT_PATH%\extern\icu\tzdata\le.zip -d %FB_ROOT_PATH%\extern\icu\tzdata-extract
)
if errorlevel 1 call :ERROR build failed - see make_icu_%FB_TARGET_PLATFORM%.log for details
@goto :EOF

View File

@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27703.2047
# Visual Studio Version 17
VisualStudioVersion = 17.7.34031.279
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "alice", "alice.vcxproj", "{0D616380-1A5A-4230-A80B-021360E4E669}"
EndProject
@ -10,8 +10,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "common.vcxproj",
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine", "engine.vcxproj", "{F8798A49-9D20-451E-A7BD-FEB5237103B5}"
ProjectSection(ProjectDependencies) = postProject
{DFFA2117-E6A8-4806-BB69-94DAC8F8F42A} = {DFFA2117-E6A8-4806-BB69-94DAC8F8F42A}
{53F75437-15B8-4A5C-86BF-E238CC68FCBC} = {53F75437-15B8-4A5C-86BF-E238CC68FCBC}
{DFFA2117-E6A8-4806-BB69-94DAC8F8F42A} = {DFFA2117-E6A8-4806-BB69-94DAC8F8F42A}
{EABA0FF3-1C4D-4FAB-8418-31C9061F3F0D} = {EABA0FF3-1C4D-4FAB-8418-31C9061F3F0D}
EndProjectSection
EndProject
@ -49,7 +49,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intl", "intl.vcxproj", "{DF
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "isql", "isql.vcxproj", "{DEE75AD5-F165-40E1-80B2-400E27725D5C}"
ProjectSection(ProjectDependencies) = postProject
{F8798A49-9D20-451E-A7BD-FEB5237103B5} = {F8798A49-9D20-451E-A7BD-FEB5237103B5}
{54ECAE83-4E1C-4433-9270-5708BC3A3A80} = {54ECAE83-4E1C-4433-9270-5708BC3A3A80}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "remote", "remote.vcxproj", "{4BCC693D-1745-45ED-8302-E5E2F979549A}"
@ -98,6 +98,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common_test", "common_test.
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_test", "engine_test.vcxproj", "{3314D6AD-554F-4AE1-B297-6D2D6207DD7C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "isql_static", "isql_static.vcxproj", "{54ECAE83-4E1C-4433-9270-5708BC3A3A80}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "isql_test", "isql_test.vcxproj", "{55537F19-3DE1-40C5-9124-C9534B1B0290}"
ProjectSection(ProjectDependencies) = postProject
{54ECAE83-4E1C-4433-9270-5708BC3A3A80} = {54ECAE83-4E1C-4433-9270-5708BC3A3A80}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@ -376,6 +383,14 @@ Global
{B32D1B09-8161-451E-8D20-D30F26094EC0}.Release|Win32.Build.0 = Release|Win32
{B32D1B09-8161-451E-8D20-D30F26094EC0}.Release|x64.ActiveCfg = Release|x64
{B32D1B09-8161-451E-8D20-D30F26094EC0}.Release|x64.Build.0 = Release|x64
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Debug|Win32.ActiveCfg = Debug|Win32
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Debug|Win32.Build.0 = Debug|Win32
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Debug|x64.ActiveCfg = Debug|x64
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Debug|x64.Build.0 = Debug|x64
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Release|Win32.ActiveCfg = Release|Win32
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Release|Win32.Build.0 = Release|Win32
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Release|x64.ActiveCfg = Release|x64
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Release|x64.Build.0 = Release|x64
{035D26F9-B406-4D60-A8B7-172098479254}.Debug|Win32.ActiveCfg = Debug|Win32
{035D26F9-B406-4D60-A8B7-172098479254}.Debug|Win32.Build.0 = Debug|Win32
{035D26F9-B406-4D60-A8B7-172098479254}.Debug|x64.ActiveCfg = Debug|x64
@ -392,14 +407,22 @@ Global
{3314D6AD-554F-4AE1-B297-6D2D6207DD7C}.Release|Win32.Build.0 = Release|Win32
{3314D6AD-554F-4AE1-B297-6D2D6207DD7C}.Release|x64.ActiveCfg = Release|x64
{3314D6AD-554F-4AE1-B297-6D2D6207DD7C}.Release|x64.Build.0 = Release|x64
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Debug|Win32.ActiveCfg = Debug|Win32
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Debug|Win32.Build.0 = Debug|Win32
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Debug|x64.ActiveCfg = Debug|x64
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Debug|x64.Build.0 = Debug|x64
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Release|Win32.ActiveCfg = Release|Win32
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Release|Win32.Build.0 = Release|Win32
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Release|x64.ActiveCfg = Release|x64
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE}.Release|x64.Build.0 = Release|x64
{54ECAE83-4E1C-4433-9270-5708BC3A3A80}.Debug|Win32.ActiveCfg = Debug|Win32
{54ECAE83-4E1C-4433-9270-5708BC3A3A80}.Debug|Win32.Build.0 = Debug|Win32
{54ECAE83-4E1C-4433-9270-5708BC3A3A80}.Debug|x64.ActiveCfg = Debug|x64
{54ECAE83-4E1C-4433-9270-5708BC3A3A80}.Debug|x64.Build.0 = Debug|x64
{54ECAE83-4E1C-4433-9270-5708BC3A3A80}.Release|Win32.ActiveCfg = Release|Win32
{54ECAE83-4E1C-4433-9270-5708BC3A3A80}.Release|Win32.Build.0 = Release|Win32
{54ECAE83-4E1C-4433-9270-5708BC3A3A80}.Release|x64.ActiveCfg = Release|x64
{54ECAE83-4E1C-4433-9270-5708BC3A3A80}.Release|x64.Build.0 = Release|x64
{55537F19-3DE1-40C5-9124-C9534B1B0290}.Debug|Win32.ActiveCfg = Debug|Win32
{55537F19-3DE1-40C5-9124-C9534B1B0290}.Debug|Win32.Build.0 = Debug|Win32
{55537F19-3DE1-40C5-9124-C9534B1B0290}.Debug|x64.ActiveCfg = Debug|x64
{55537F19-3DE1-40C5-9124-C9534B1B0290}.Debug|x64.Build.0 = Debug|x64
{55537F19-3DE1-40C5-9124-C9534B1B0290}.Release|Win32.ActiveCfg = Release|Win32
{55537F19-3DE1-40C5-9124-C9534B1B0290}.Release|Win32.Build.0 = Release|Win32
{55537F19-3DE1-40C5-9124-C9534B1B0290}.Release|x64.ActiveCfg = Release|x64
{55537F19-3DE1-40C5-9124-C9534B1B0290}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -442,6 +465,8 @@ Global
{9821F2C0-4EC1-4ACB-BF32-DEB4C21032DE} = {5A1544E3-A87E-4F78-B197-528C12A64C7D}
{035D26F9-B406-4D60-A8B7-172098479254} = {BDDF1E9A-4E5B-4320-8B92-A0FB71657380}
{3314D6AD-554F-4AE1-B297-6D2D6207DD7C} = {BDDF1E9A-4E5B-4320-8B92-A0FB71657380}
{54ECAE83-4E1C-4433-9270-5708BC3A3A80} = {DA5015E4-8349-4DAB-A1E5-18BDBDDA3022}
{55537F19-3DE1-40C5-9124-C9534B1B0290} = {BDDF1E9A-4E5B-4320-8B92-A0FB71657380}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {97076DB2-CFCD-4277-BDF0-A6407852E1AC}

View File

@ -75,7 +75,6 @@
<ClCompile Include="..\..\..\src\common\isc.cpp" />
<ClCompile Include="..\..\..\src\common\isc_file.cpp" />
<ClCompile Include="..\..\..\src\common\isc_sync.cpp" />
<ClCompile Include="..\..\..\src\common\keywords.cpp" />
<ClCompile Include="..\..\..\src\common\MsgMetadata.cpp" />
<ClCompile Include="..\..\..\src\common\MsgUtil.cpp" />
<ClCompile Include="..\..\..\src\common\os\win32\fbsyslog.cpp" />
@ -142,7 +141,6 @@
<ClInclude Include="..\..\..\src\common\classes\MsgPrint.h" />
<ClInclude Include="..\..\..\src\common\classes\NestConst.h" />
<ClInclude Include="..\..\..\src\common\classes\NoThrowTimeStamp.h" />
<ClInclude Include="..\..\..\src\common\classes\Nullable.h" />
<ClInclude Include="..\..\..\src\common\classes\objects_array.h" />
<ClInclude Include="..\..\..\src\common\classes\ParsedList.h" />
<ClInclude Include="..\..\..\src\common\classes\QualifiedName.h" />
@ -160,6 +158,7 @@
<ClInclude Include="..\..\..\src\common\classes\TimerImpl.h" />
<ClInclude Include="..\..\..\src\common\classes\timestamp.h" />
<ClInclude Include="..\..\..\src\common\classes\tree.h" />
<ClInclude Include="..\..\..\src\common\classes\TriState.h" />
<ClInclude Include="..\..\..\src\common\classes\UserBlob.h" />
<ClInclude Include="..\..\..\src\common\classes\VaryStr.h" />
<ClInclude Include="..\..\..\src\common\classes\vector.h" />
@ -189,7 +188,6 @@
<ClInclude Include="..\..\..\src\common\isc_f_proto.h" />
<ClInclude Include="..\..\..\src\common\isc_proto.h" />
<ClInclude Include="..\..\..\src\common\isc_s_proto.h" />
<ClInclude Include="..\..\..\src\common\keywords.h" />
<ClInclude Include="..\..\..\src\common\MsgMetadata.h" />
<ClInclude Include="..\..\..\src\common\MsgUtil.h" />
<ClInclude Include="..\..\..\src\common\os\divorce.h" />
@ -199,6 +197,7 @@
<ClInclude Include="..\..\..\src\common\os\mod_loader.h" />
<ClInclude Include="..\..\..\src\common\os\os_utils.h" />
<ClInclude Include="..\..\..\src\common\os\path_utils.h" />
<ClInclude Include="..\..\..\src\common\ParserTokens.h" />
<ClInclude Include="..\..\..\src\common\prett_proto.h" />
<ClInclude Include="..\..\..\src\common\ScanDir.h" />
<ClInclude Include="..\..\..\src\common\sdl.h" />
@ -218,6 +217,7 @@
<ClInclude Include="..\..\..\src\common\ThreadStart.h" />
<ClInclude Include="..\..\..\src\common\TimeZones.h" />
<ClInclude Include="..\..\..\src\common\TimeZoneUtil.h" />
<ClInclude Include="..\..\..\src\common\Token.h" />
<ClInclude Include="..\..\..\src\common\Tokens.h" />
<ClInclude Include="..\..\..\src\common\unicode_util.h" />
<ClInclude Include="..\..\..\src\common\UtilSvc.h" />
@ -356,4 +356,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

View File

@ -243,9 +243,6 @@
<ClCompile Include="..\..\..\src\common\classes\ParsedList.cpp">
<Filter>classes</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\common\keywords.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\common\Int128.cpp">
<Filter>common</Filter>
</ClCompile>
@ -440,9 +437,6 @@
<ClInclude Include="..\..\..\src\common\classes\NestConst.h">
<Filter>headers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\common\classes\Nullable.h">
<Filter>headers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\common\classes\objects_array.h">
<Filter>headers</Filter>
</ClInclude>
@ -482,6 +476,9 @@
<ClInclude Include="..\..\..\src\common\classes\tree.h">
<Filter>headers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\common\classes\TriState.h">
<Filter>headers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\common\classes\UserBlob.h">
<Filter>headers</Filter>
</ClInclude>
@ -581,6 +578,9 @@
<ClInclude Include="..\..\..\src\common\classes\BlobWrapper.h">
<Filter>headers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\common\ParserTokens.h">
<Filter>headers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\common\sha2\sha2.h">
<Filter>headers</Filter>
</ClInclude>
@ -599,15 +599,15 @@
<ClInclude Include="..\..\..\src\common\classes\ParsedList.h">
<Filter>headers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\common\keywords.h">
<Filter>headers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\common\Int128.h">
<Filter>headers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\common\Task.h">
<Filter>headers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\common\Token.h">
<Filter>headers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\common\classes\TimerImpl.h">
<Filter>headers</Filter>
</ClInclude>

View File

@ -47,6 +47,7 @@
<ClCompile Include="..\..\..\src\dsql\errd.cpp" />
<ClCompile Include="..\..\..\src\dsql\ExprNodes.cpp" />
<ClCompile Include="..\..\..\src\dsql\gen.cpp" />
<ClCompile Include="..\..\..\src\dsql\Keywords.cpp" />
<ClCompile Include="..\..\..\src\dsql\make.cpp" />
<ClCompile Include="..\..\..\src\dsql\movd.cpp" />
<ClCompile Include="..\..\..\src\dsql\parse.cpp" />
@ -107,6 +108,7 @@
<ClCompile Include="..\..\..\src\jrd\optimizer\Optimizer.cpp" />
<ClCompile Include="..\..\..\src\jrd\optimizer\Retrieval.cpp" />
<ClCompile Include="..\..\..\src\jrd\optimizer\InnerJoin.cpp" />
<ClCompile Include="..\..\..\src\jrd\optimizer\OuterJoin.cpp" />
<ClCompile Include="..\..\..\src\jrd\os\win32\winnt.cpp" />
<ClCompile Include="..\..\..\src\jrd\pag.cpp" />
<ClCompile Include="..\..\..\src\jrd\par.cpp" />
@ -160,6 +162,7 @@
<ClCompile Include="..\..\..\src\jrd\sqz.cpp" />
<ClCompile Include="..\..\..\src\jrd\Statement.cpp" />
<ClCompile Include="..\..\..\src\jrd\svc.cpp" />
<ClCompile Include="..\..\..\src\jrd\sys-packages\SqlPackage.cpp" />
<ClCompile Include="..\..\..\src\jrd\SysFunction.cpp" />
<ClCompile Include="..\..\..\src\jrd\SystemPackages.cpp" />
<ClCompile Include="..\..\..\src\jrd\TempSpace.cpp" />
@ -201,6 +204,7 @@
<ClInclude Include="..\..\..\src\dsql\errd_proto.h" />
<ClInclude Include="..\..\..\src\dsql\ExprNodes.h" />
<ClInclude Include="..\..\..\src\dsql\gen_proto.h" />
<ClInclude Include="..\..\..\src\dsql\Keywords.h" />
<ClInclude Include="..\..\..\src\dsql\make_proto.h" />
<ClInclude Include="..\..\..\src\dsql\metd_proto.h" />
<ClInclude Include="..\..\..\src\dsql\movd_proto.h" />
@ -310,6 +314,7 @@
<ClInclude Include="..\..\..\src\jrd\ods_proto.h" />
<ClInclude Include="..\..\..\src\jrd\optimizer\Optimizer.h" />
<ClInclude Include="..\..\..\src\jrd\pag.h" />
<ClInclude Include="..\..\..\src\jrd\PageToBufferMap.h" />
<ClInclude Include="..\..\..\src\jrd\pag_proto.h" />
<ClInclude Include="..\..\..\src\jrd\par_proto.h" />
<ClInclude Include="..\..\..\src\jrd\PreparedStatement.h" />
@ -342,6 +347,7 @@
<ClInclude Include="..\..\..\src\jrd\status.h" />
<ClInclude Include="..\..\..\src\jrd\svc.h" />
<ClInclude Include="..\..\..\src\jrd\svc_undoc.h" />
<ClInclude Include="..\..\..\src\jrd\sys-packages\SqlPackage.h" />
<ClInclude Include="..\..\..\src\jrd\SysFunction.h" />
<ClInclude Include="..\..\..\src\jrd\SystemPackages.h" />
<ClInclude Include="..\..\..\src\jrd\TempSpace.h" />
@ -510,4 +516,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

View File

@ -156,6 +156,9 @@
<ClCompile Include="..\..\..\src\dsql\gen.cpp">
<Filter>DSQL</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\dsql\Keywords.cpp">
<Filter>DSQL</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\dsql\make.cpp">
<Filter>DSQL</Filter>
</ClCompile>
@ -375,6 +378,9 @@
<ClCompile Include="..\..\..\src\jrd\svc.cpp">
<Filter>JRD files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\jrd\sys-packages\SqlPackage.cpp">
<Filter>JRD files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\jrd\SysFunction.cpp">
<Filter>JRD files</Filter>
</ClCompile>
@ -522,6 +528,9 @@
<ClCompile Include="..\..\..\src\jrd\optimizer\InnerJoin.cpp">
<Filter>Optimizer</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\jrd\optimizer\OuterJoin.cpp">
<Filter>Optimizer</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\jrd\optimizer\Optimizer.cpp">
<Filter>Optimizer</Filter>
</ClCompile>
@ -587,6 +596,9 @@
<ClInclude Include="..\..\..\src\dsql\gen_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\dsql\Keywords.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\dsql\make_proto.h">
<Filter>Header files</Filter>
</ClInclude>
@ -1067,6 +1079,9 @@
<ClInclude Include="..\..\..\src\dsql\DsqlBatch.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\jrd\sys-packages\SqlPackage.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\jrd\SystemPackages.h">
<Filter>Header files</Filter>
</ClInclude>
@ -1085,6 +1100,7 @@
<ClInclude Include="..\..\..\src\jrd\WorkerAttachment.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\jrd\PageToBufferMap.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\src\dsql\DdlNodes.epp">
@ -1130,4 +1146,4 @@
<Filter>DSQL</Filter>
</None>
</ItemGroup>
</Project>
</Project>

View File

@ -169,31 +169,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\isql\ColList.cpp" />
<ClCompile Include="..\..\..\src\isql\Extender.cpp" />
<ClCompile Include="..\..\..\gen\isql\extract.cpp" />
<ClCompile Include="..\..\..\src\common\fb_exception.cpp" />
<ClCompile Include="..\..\..\src\isql\InputDevices.cpp" />
<ClCompile Include="..\..\..\gen\isql\isql.cpp" />
<ClCompile Include="..\..\..\src\isql\iutils.cpp" />
<ClCompile Include="..\..\..\src\isql\OptionsBase.cpp" />
<ClCompile Include="..\..\..\gen\isql\show.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\src\isql\extract.epp" />
<None Include="..\..\..\src\isql\isql.epp" />
<None Include="..\..\..\src\isql\show.epp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\isql\ColList.h" />
<ClInclude Include="..\..\..\src\isql\Extender.h" />
<ClInclude Include="..\..\..\src\isql\extra_proto.h" />
<ClInclude Include="..\..\..\src\isql\InputDevices.h" />
<ClInclude Include="..\..\..\src\isql\isql.h" />
<ClInclude Include="..\..\..\src\isql\isql_proto.h" />
<ClInclude Include="..\..\..\src\isql\iutils_proto.h" />
<ClInclude Include="..\..\..\src\isql\OptionsBase.h" />
<ClInclude Include="..\..\..\src\isql\show_proto.h" />
<ClCompile Include="..\..\..\src\isql\main.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\src\jrd\version.rc">
@ -206,13 +182,30 @@
<ItemGroup>
<ProjectReference Include="common.vcxproj">
<Project>{15605f44-bffd-444f-ad4c-55dc9d704465}</Project>
<Private>true</Private>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="isql_static.vcxproj">
<Project>{54ecae83-4e1c-4433-9270-5708bc3a3a80}</Project>
<Private>true</Private>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>true</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="yvalve.vcxproj">
<Project>{4fe03933-98cd-4879-a135-fd9430087a6b}</Project>
<Private>true</Private>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

View File

@ -5,89 +5,14 @@
<UniqueIdentifier>{432b17da-feb5-4854-bf4a-2eade764f005}</UniqueIdentifier>
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
</Filter>
<Filter Include="Header files">
<UniqueIdentifier>{0e9c9357-7411-4d36-b6da-5bf58d471259}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl</Extensions>
</Filter>
<Filter Include="Resource files">
<UniqueIdentifier>{64a46d33-07a2-4c68-8ae0-30be298677f3}</UniqueIdentifier>
</Filter>
<Filter Include="ISQL files\GPRE epp">
<UniqueIdentifier>{a0276ced-d198-4e65-bb2b-d78e9c5e1f3c}</UniqueIdentifier>
<Extensions>epp</Extensions>
</Filter>
<Filter Include="ISQL files\GPRE cpp">
<UniqueIdentifier>{b3973b46-4da2-46d6-921f-d6e87e3ba3e7}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\isql\ColList.cpp">
<ClCompile Include="..\..\..\src\isql\main.cpp">
<Filter>ISQL files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\isql\Extender.cpp">
<Filter>ISQL files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\common\fb_exception.cpp">
<Filter>ISQL files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\isql\InputDevices.cpp">
<Filter>ISQL files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\isql\iutils.cpp">
<Filter>ISQL files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\isql\OptionsBase.cpp">
<Filter>ISQL files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\isql\extract.cpp">
<Filter>ISQL files\GPRE cpp</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\isql\isql.cpp">
<Filter>ISQL files\GPRE cpp</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\isql\show.cpp">
<Filter>ISQL files\GPRE cpp</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\src\isql\extract.epp">
<Filter>ISQL files\GPRE epp</Filter>
</None>
<None Include="..\..\..\src\isql\isql.epp">
<Filter>ISQL files\GPRE epp</Filter>
</None>
<None Include="..\..\..\src\isql\show.epp">
<Filter>ISQL files\GPRE epp</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\isql\ColList.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\Extender.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\extra_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\InputDevices.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\isql.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\isql_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\iutils_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\OptionsBase.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\show_proto.h">
<Filter>Header files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\src\jrd\version.rc">

View File

@ -0,0 +1,168 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\isql\ColList.cpp" />
<ClCompile Include="..\..\..\src\isql\Extender.cpp" />
<ClCompile Include="..\..\..\gen\isql\extract.cpp" />
<ClCompile Include="..\..\..\src\common\fb_exception.cpp" />
<ClCompile Include="..\..\..\src\isql\FrontendLexer.cpp" />
<ClCompile Include="..\..\..\src\isql\InputDevices.cpp" />
<ClCompile Include="..\..\..\gen\isql\isql.cpp" />
<ClCompile Include="..\..\..\src\isql\iutils.cpp" />
<ClCompile Include="..\..\..\src\isql\OptionsBase.cpp" />
<ClCompile Include="..\..\..\gen\isql\show.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\src\isql\extract.epp" />
<None Include="..\..\..\src\isql\isql.epp" />
<None Include="..\..\..\src\isql\show.epp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\isql\ColList.h" />
<ClInclude Include="..\..\..\src\isql\Extender.h" />
<ClInclude Include="..\..\..\src\isql\extra_proto.h" />
<ClInclude Include="..\..\..\src\isql\FrontendLexer.h" />
<ClInclude Include="..\..\..\src\isql\InputDevices.h" />
<ClInclude Include="..\..\..\src\isql\isql.h" />
<ClInclude Include="..\..\..\src\isql\isql_proto.h" />
<ClInclude Include="..\..\..\src\isql\iutils_proto.h" />
<ClInclude Include="..\..\..\src\isql\OptionsBase.h" />
<ClInclude Include="..\..\..\src\isql\show_proto.h" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{54ECAE83-4E1C-4433-9270-5708BC3A3A80}</ProjectGuid>
<WindowsTargetPlatformVersion Condition="'$(VisualStudioVersion)'=='15.0'">10.0.17763.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion Condition="'$(VisualStudioVersion)'=='16.0'">10.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion Condition="'$(VisualStudioVersion)'=='17.0'">10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='15.0'">v141</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='16.0'">v142</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='17.0'">v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='15.0'">v141</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='16.0'">v142</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='17.0'">v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='15.0'">v141</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='16.0'">v142</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='17.0'">v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='15.0'">v141</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='16.0'">v142</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='17.0'">v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdRelease.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdDebug.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdRelease.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdDebug.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;SUPERCLIENT;DEV_BUILD;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;SUPERCLIENT;DEV_BUILD;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;SUPERCLIENT;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;SUPERCLIENT;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>
</PrecompiledHeader>
</ClCompile>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="ISQL files">
<UniqueIdentifier>{1a597f92-6f3f-4d63-8dd8-dde1426edf41}</UniqueIdentifier>
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
</Filter>
<Filter Include="Header files">
<UniqueIdentifier>{b6967076-ecd8-4f75-a128-3da2b3c4112d}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl</Extensions>
</Filter>
<Filter Include="ISQL files\GPRE epp">
<UniqueIdentifier>{2962ff05-3209-48ca-b313-4b8f443bb726}</UniqueIdentifier>
<Extensions>epp</Extensions>
</Filter>
<Filter Include="ISQL files\GPRE cpp">
<UniqueIdentifier>{1366807a-243b-4a32-a208-d8bc3a11dacc}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\isql\ColList.cpp">
<Filter>ISQL files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\isql\Extender.cpp">
<Filter>ISQL files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\common\fb_exception.cpp">
<Filter>ISQL files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\isql\FrontendLexer.cpp">
<Filter>ISQL files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\isql\InputDevices.cpp">
<Filter>ISQL files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\isql\iutils.cpp">
<Filter>ISQL files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\isql\OptionsBase.cpp">
<Filter>ISQL files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\isql\extract.cpp">
<Filter>ISQL files\GPRE cpp</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\isql\isql.cpp">
<Filter>ISQL files\GPRE cpp</Filter>
</ClCompile>
<ClCompile Include="..\..\..\gen\isql\show.cpp">
<Filter>ISQL files\GPRE cpp</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\src\isql\extract.epp">
<Filter>ISQL files\GPRE epp</Filter>
</None>
<None Include="..\..\..\src\isql\isql.epp">
<Filter>ISQL files\GPRE epp</Filter>
</None>
<None Include="..\..\..\src\isql\show.epp">
<Filter>ISQL files\GPRE epp</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\isql\ColList.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\Extender.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\extra_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\FrontendLexer.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\InputDevices.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\isql.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\isql_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\iutils_proto.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\OptionsBase.h">
<Filter>Header files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\isql\show_proto.h">
<Filter>Header files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -0,0 +1,201 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{55537F19-3DE1-40C5-9124-C9534B1B0290}</ProjectGuid>
<RootNamespace>isql_test</RootNamespace>
<WindowsTargetPlatformVersion Condition="'$(VisualStudioVersion)'=='15.0'">10.0.17763.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion Condition="'$(VisualStudioVersion)'=='16.0'">10.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion Condition="'$(VisualStudioVersion)'=='17.0'">10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='15.0'">v141</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='16.0'">v142</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='17.0'">v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='15.0'">v141</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='16.0'">v142</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='17.0'">v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='15.0'">v141</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='16.0'">v142</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='17.0'">v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='15.0'">v141</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='16.0'">v142</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)'=='17.0'">v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdDebug.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdRelease.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdDebug.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
<Import Project="FirebirdCommon.props" />
<Import Project="FirebirdRelease.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\..\temp\$(PlatformName)\$(Configuration)\firebird\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;SUPERCLIENT;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>re2.lib;comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;SUPERCLIENT;DEV_BUILD;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>re2.lib;comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;SUPERCLIENT;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>re2.lib;comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;SUPERCLIENT;DEV_BUILD;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>re2.lib;comctl32.lib;ws2_32.lib;mpr.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\src\jrd\version.rc">
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\src\jrd</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\src\jrd</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\src\jrd</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\..\src\jrd</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\isql\tests\FrontendLexerTest.cpp" />
<ClCompile Include="..\..\..\src\isql\tests\ISqlTest.cpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="common.vcxproj">
<Project>{15605f44-bffd-444f-ad4c-55dc9d704465}</Project>
<Private>true</Private>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="isql_static.vcxproj">
<Project>{54ecae83-4e1c-4433-9270-5708bc3a3a80}</Project>
</ProjectReference>
<ProjectReference Include="yvalve.vcxproj">
<Project>{4fe03933-98cd-4879-a135-fd9430087a6b}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="source">
<UniqueIdentifier>{1ebb36b8-4d58-4cf2-8594-fc2e046f927b}</UniqueIdentifier>
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\isql\tests\FrontendLexerTest.cpp">
<Filter>source</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\isql\tests\ISqlTest.cpp">
<Filter>source</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\src\jrd\version.rc">
<Filter>source</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -7,5 +7,6 @@
@%FB_BIN_DIR%\common_test --log_level=all
@%FB_BIN_DIR%\engine_test --log_level=all
@%FB_BIN_DIR%\isql_test --log_level=all
:END

30
builds/win32/unzip.vbs Normal file
View File

@ -0,0 +1,30 @@
src = Wscript.Arguments(0) ' source zip archive name
dst = Wscript.Arguments(1) ' destination folder name
set objShell = CreateObject("Shell.Application")
set srcFiles = objShell.NameSpace(src)
set dstFolder = objShell.NameSpace(dst)
if (srcFiles is nothing) then
set fso = CreateObject("Scripting.FileSystemObject")
fso.GetStandardStream(2).WriteLine "Wrong source file name: " & src
Wscript.Quit
end if
if (dstFolder is nothing) then
set fso = CreateObject("Scripting.FileSystemObject")
call fso.CreateFolder(dst)
set dstFolder = objShell.NameSpace(dst)
end if
' Options
' 4
' Do not display a progress dialog box.
' 16
' Respond with "Yes to All" for any dialog box that is displayed.
call dstFolder.CopyHere(srcFiles.items, 16+4)
set srcFiles = Nothing
Set objShell = Nothing

View File

@ -26,9 +26,19 @@ dnl XE_CONF_DIR(param, help, variable, default)
define([XE_CONF_DIR],[
AC_ARG_WITH([$1],
[AS_HELP_STRING([--with-$1],[$2])],
[[$3]="$withval"
CHANGE_PATH_SUPPORT=no
AC_DEFINE_UNQUOTED([$3], "$[$3]", [$2])],
[
case "$withval" in
/*)
CHANGE_PATH_SUPPORT=no
[$3]="$withval"
;;
*)
[$3]='${fb_install_prefix}'/"${withval}"
;;
esac
AC_DEFINE_UNQUOTED([$3], "${withval}", [$2])
],
[[$3]='${fb_install_prefix}[$4]'
AC_DEFINE_UNQUOTED([$3], [""], [$2])]
)
@ -67,6 +77,26 @@ AC_CANONICAL_BUILD
CPU_TYPE=$build_cpu
AC_SUBST(CPU_TYPE)
case "$build" in
aarch64-*-darwin*)
VCPKG_TRIPLET=fb-arm64-osx
;;
x*64-*-darwin*)
VCPKG_TRIPLET=fb-x64-osx
;;
esac
if test "x$VCPKG_TRIPLET" != "x" ; then
if ! test -f ./vcpkg/vcpkg; then
./vcpkg/bootstrap-vcpkg.sh -disableMetrics
fi
./vcpkg/vcpkg install --triplet=$VCPKG_TRIPLET
VCPKG_INSTALLED=`pwd`/vcpkg_installed/$VCPKG_TRIPLET
AC_SUBST(VCPKG_INSTALLED)
fi
dnl EKU: set appropiate defaults for each platform
dnl EDITLINE_FLG : support fancy command line editing in isql
@ -305,6 +335,18 @@ dnl CPU_TYPE=ppc64
libdir=/usr/lib64
;;
loongarch*-*-linux*)
MAKEFILE_PREFIX=linux_loongarch
INSTALL_PREFIX=linux
PLATFORM=LINUX
AC_DEFINE(LINUX, 1, [Define this if OS is Linux])
EDITLINE_FLG=Y
SHRLIB_EXT=so
STD_EDITLINE=true
STD_ICU=true
libdir=/usr/lib64
;;
riscv64*-*-linux*)
MAKEFILE_PREFIX=linux_riscv64
INSTALL_PREFIX=linux
@ -669,6 +711,14 @@ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
LIBS="$LIBS $PTHREAD_LIBS"
case "$build" in
*-*-darwin*)
CFLAGS="$CFLAGS -I${VCPKG_INSTALLED}/include"
CXXFLAGS="$CXXFLAGS -nostdinc++ -isystem ${VCPKG_INSTALLED}/include/c++/v1 -I${VCPKG_INSTALLED}/include"
LDFLAGS="$LDFLAGS -nostdlib++ -stdlib=libc++ -L${VCPKG_INSTALLED}/lib -lc++"
;;
esac
AC_ARG_ENABLE(raw-devices,
[ --enable-raw-devices enable databases on raw devices (default on POSIX)],
[case "$enableval" in
@ -1397,6 +1447,18 @@ dnl # output
fi
fi
case "$build" in
*-*-darwin*)
cp -a $VCPKG_INSTALLED/lib/libicu* gen/\$fb_tgt/firebird/lib/
install_name_tool -id @rpath/lib/libicuuc.dylib gen/\$fb_tgt/firebird/lib/libicuuc.dylib
install_name_tool -id @rpath/lib/libicui18n.dylib gen/\$fb_tgt/firebird/lib/libicui18n.dylib
install_name_tool -id @rpath/lib/libicudata.dylib gen/\$fb_tgt/firebird/lib/libicudata.dylib
install_name_tool -change @rpath/libicudata.71.dylib @loader_path/libicudata.71.dylib gen/\$fb_tgt/firebird/lib/libicuuc.71.dylib
install_name_tool -change @rpath/libicudata.71.dylib @loader_path/libicudata.71.dylib gen/\$fb_tgt/firebird/lib/libicui18n.71.dylib
install_name_tool -change @rpath/libicuuc.71.dylib @loader_path/libicuuc.71.dylib gen/\$fb_tgt/firebird/lib/libicui18n.71.dylib
;;
esac
dnl ### TEMP ### directories for generated .cpp, .o and .d by module name
for src_dir in `cd src; ls -R -1 * | grep : | tr -d : | tr "\n" " "; cd ..`; do
mkdir -p temp/\$fb_tgt/\$src_dir
@ -1592,12 +1654,15 @@ gen/make.platform.solaris.examples:${MAKE_SRC_DIR}/make.platform.solaris.example
;;
esac
# Fix problem with autoconf 2.72 inserting -std in CXX.
CXX=`echo "$CXX" | sed -e 's/\(-std=c++11\)//g' -e 's/\(-std=gnu++11\)//g'`
AC_OUTPUT
dnl Print out the build configuration (the most interesting thing)
echo
echo
echo The Firebird5 package has been configured with the following options:
echo The Firebird6 package has been configured with the following options:
echo
case $DEVEL_FLG in

View File

@ -1,36 +1,56 @@
# Building Firebird on MacOSX using brew
# Building Firebird on MacOSX
## Preparing
- Install XCode
MacOS build uses `vcpkg` installed as git submodule:
```bash
git submodule update --init
```
Install XCode and dependencies with `homebrew`:
```bash
brew install automake autoconf-archive cmake libtool ninja
```
## Configuring
Set necessary environment variables:
```bash
brew install automake libtool icu4c
export CFLAGS=-I/usr/local/opt/icu4c/include
export LDFLAGS=-L/usr/local/opt/icu4c/lib
export CXXFLAGS=-I/usr/local/opt/icu4c/include
export LD_LIBRARY_PATH="/usr/local/opt/icu4c/lib:$LD_LIBRARY_PATH"
export LIBTOOLIZE=glibtoolize
export LIBTOOL=glibtool
```
## Configuring
In order to get Release build:
```bash
./autogen.sh --with-builtin-tommath --with-builtin-tomcrypt
```
## Building
In order to get Debug build:
In order to get Release build
```bash
./autogen.sh --with-builtin-tommath --with-builtin-tomcrypt --enable-developer
```
## Building
```bash
make -j4
```
In order to get Debug build
## Testing
```bash
make -j4 Debug
```
make tests -j4
make run_tests
```
## Packaging
```bash
make -C gen -B -f make.platform.postfix
make -C gen -B -f Makefile.install
```

111
doc/README.cast.format.md Normal file
View File

@ -0,0 +1,111 @@
## 1. DATETIME TO STRING
The following patterns are currently implemented for datetime to string conversion:
| Format Pattern | Description |
| -------------- | ----------- |
| YEAR | Year (1 - 9999) |
| YYYY | Last 4 digits of Year (0001 - 9999) |
| YYY | Last 3 digits of Year (000 - 999) |
| YY | Last 2 digits of Year (00 - 99) |
| Y | Last 1 digits of Year (0 - 9) |
| Q | Quarter of the Year (1 - 4) |
| MM | Month (01 - 12) |
| MON | Short Month name (Apr) |
| MONTH | Full Month name (APRIL) |
| RM | Roman representation of the Month (I - XII) |
| WW | Week of the Year (01 - 53) |
| W | Week of the Month (1 - 5) |
| D | Day of the Week (1 - 7) |
| DAY | Full name of the Day (MONDAY) |
| DD | Day of the Month (01 - 31) |
| DDD | Day of the Year (001 - 366) |
| DY | Short name of the Day (Mon) |
| J | Julian Day (number of days since January 1, 4712 BC) |
| HH / HH12 | Hour of the Day (01 - 12) without Period (for Period use A.M or P.M.) |
| HH24 | Hour of the Day (00 - 23) |
| MI | Minutes (00 - 59) |
| SS | Seconds (00 - 59) |
| SSSSS | Seconds after midnight (0 - 86399) |
| FF1 - FF9 | Fractional seconds with the specified accuracy |
| A.M. / P.M. | Period for 12 hours time (it doesn't matter which one is used, period will be inserted based on time) |
| TZH | Time zone in Hours (-14 - 14) |
| TZM | Time zone in Minutes (00 - 59) |
| TZR | Time zone Name |
The dividers are:
| Dividers |
| ------------- |
| . |
| / |
| , |
| ; |
| : |
| 'space' |
| - |
Patterns can be used without any dividers:
```
SELECT CAST(CURRENT_TIMESTAMP AS VARCHAR(50) FORMAT 'YEARMMDD HH24MISS') FROM RDB$DATABASE;
=========================
20230719 161757
```
However, be careful with patterns like `DDDDD`, it will be interpreted as `DDD` + `DD`.
It is possible to insert raw text into a format string with `""`: `... FORMAT '"Today is" DAY'` - Today is MONDAY. To add `"` in output raw string use `\"` (to print `\` use `\\`).
Also the format is case-insensitive, so `YYYY-MM` == `yyyy-mm`.
Example:
```
SELECT CAST(CURRENT_TIMESTAMP AS VARCHAR(45) FORMAT 'DD.MM.YEAR HH24:MI:SS "is" J "Julian day"') FROM RDB$DATABASE;
=========================
14.6.2023 15:41:29 is 2460110 Julian day
```
## 2. STRING TO DATETIME
The following patterns are currently implemented for string to datetime conversion:
| Format Pattern | Description |
| ------------- | ------------- |
| YEAR | Year |
| YYYY | Last 4 digits of Year |
| YYY | Last 3 digits of Year |
| YY | Last 2 digits of Year |
| Y | Last 1 digits of Year |
| RR / RRRR | Round Year (further information below) |
| MM | Month (1 - 12) |
| MON | Short Month name (Apr) |
| MONTH | Full Month name (APRIL) |
| RM | Roman representation of the Month (I - XII) |
| DD | Day of the Month (1 - 31) |
| J | Julian Day (number of days since January 1, 4712 BC) |
| HH / HH12 | Hour of the Day (1 - 12) without Period (to specify Period use A.M or P.M.) |
| HH24 | Hour of the Day (0 - 23) |
| MI | Minutes (0 - 59) |
| SS | Seconds (0 - 59) |
| SSSSS | Seconds after midnight (0 - 86399) |
| FF1 - FF4 | Fractional seconds with the specified accuracy |
| A.M. / P.M. | Period for 12 hours time (it doesn't matter which one is used, period will be taken from input string) |
| TZH | Time zone in Hours (-14 - 14) |
| TZM | Time zone in Minutes (0 - 59) |
| TZR | Time zone Name |
Dividers are the same as for datetime to string conversion and can also be omitted.
Year, month and day will be taken from current date if these components are not used in pattern (this applies only to data types that contain a date component).
Behavior of `RR`:
- If the specified two-digit year is 00 to 49, then
- If the last two digits of the current year are 00 to 49, then the returned year has the same first two digits as the current year.
- If the last two digits of the current year are 50 to 99, then the first 2 digits of the returned year are 1 greater than the first 2 digits of the current year.
- If the specified two-digit year is 50 to 99, then
- If the last two digits of the current year are 00 to 49, then the first 2 digits of the returned year are 1 less than the first 2 digits of the current year.
- If the last two digits of the current year are 50 to 99, then the returned year has the same first two digits as the current year.
Behavior of `RRRR`: Accepts either 4-digit or 2-digit input. If 2-digit, provides the same return as `RR`. If you do not want this functionality, then enter the 4-digit year.
Example:
```
SELECT CAST('2000.12.08 12:35:30.5000' AS TIMESTAMP FORMAT 'YEAR.MM.DD HH24:MI:SS.FF4') FROM RDB$DATABASE;
=====================
2000-12-08 12:35:30.5000
```

View File

@ -324,3 +324,98 @@ RDB$RELATIONS | 59| | | |
-- turn per-table stats off, using shortened name
SQL> SET PER_TAB OFF;
Isql enhancements in Firebird v6.
---------------------------------
12) EXPLAIN statement.
Author: Adriano dos Santos Fernandes
A new ISQL statement was created to easily show a query plan without execute it.
Note: If SET STATS is ON, stats are still shown.
Examples:
SQL> explain select * from employees where id = ?;
SQL> set term !;
SQL>
SQL> explain
CON> execute block
CON> as
CON> declare id integer;
CON> begin
CON> select id from employees where id = ? into id;
CON> end!
SQL>
SQL> set term ;!
13) SET AUTOTERM ON/OFF
Author: Adriano dos Santos Fernandes
When set to ON, terminator defined with SET TERM is changed to semicolon and a new logic
for TERM detection is used, where engine helps ISQL to detect valid usage of semicolons
inside statements.
At each semicolon (outside quotes or comments), ISQL prepares the query buffer with
engine using flag IStatement::PREPARE_REQUIRE_SEMICOLON.
If engine prepares the statement correctly, it's run and ISQL is put in new statement
mode.
If engine returns error isc_command_end_err2, then ISQL is put in statement
continuation mode and asks for another line, repeating the process.
If engine returns a different error, the error is shown and ISQL is put in new statement
mode.
Notes:
- This option can also be activated with command line parameter -autot(erm)
- It can only be used with Firebird engine/server v6 or later
- SET TERM command automatically sets AUTOTERM to OFF
- SET AUTOTERM ON command automatically sets TERM to semicolon
- While AUTOTERM ON can be used in non-interactive scripts, at each semicolon,
statement may be tried to be compiled using the server/engine.
That may be slow for big scripts with PSQL statements spanning many lines.
Examples:
SQL> SET AUTOTERM ON;
SQL> execute block returns (o1 integer)
CON> as
CON> begin
CON> o1 = 1;
CON> suspend;
CON> end;
O1
============
1
SQL> select 1 from rdb$database;
CONSTANT
============
1
SQL> select 1
CON> from rdb$database;
CONSTANT
============
1
SQL> select 1
CON> from rdb$database
CON> where true;
CONSTANT
============
1

View File

@ -1,11 +1,12 @@
# Modern C++ features
We define here as "modern C++" features the ones introduced since C++17. These features should be used in a "controlled" form in Firebird code, as not all compilers fully support them.
It's allowed to use in Firebird internal code C++ features up to and including C++17.
Only ones mentioned in this document could be used, but as necessities appears, discussion should be started in the devel list or pull requests.
Public files (as API headers) is limited to C++11.
Exceptions to these rules should be listed below and must be agreed by the team,
discussing in the devel list or by pull request.
## Allowed features
### C++17
- [if with init-statement](https://en.cppreference.com/w/cpp/language/if)
### C++20

View File

@ -108,13 +108,17 @@ To apply the changed replica-side settings, Firebird server must be restarted.
## Creating the replica database
In the Beta 1 release, any physical copying method can be used:
Any physical copying method can be used on the primary host:
* File-level copy when Firebird server is shutdown
* ALTER DATABASE BEGIN BACKUP + file-level copy + ALTER DATABASE END BACKUP
* nbackup -l + file-level copy + nbackup -n
* nbackup -b 0
If _nbackup_ was used, restore or fixup operation should be performed to complete the replica creation. Note that if you're recreating a priorly working replica, then `-seq[uence]` option of _nbackup_ must be used during restore/fixup to preserve the replication sequence counter inside the database, so that replication could continue from the moment when the primary database was copied:
* nbackup -f &lt;database&gt; -seq
Then the replica mode must be activated for the database copy. Two options are possible:
* gfix -replica read\_only &lt;database&gt; -- set up database as read-only replica

View File

@ -1,6 +1,6 @@
Initializing the Security Database
----------------------------------
The security database (security5.fdb) has no predefined users. This is intentional.
The security database (security6.fdb) has no predefined users. This is intentional.
Having user with well known predefined password and full access rights is serious security risk.
Firebird starting with version 3.0 does not require presence of SYSDBA user. One can use another name

View File

@ -1512,7 +1512,7 @@ MyPlugin : public ISomePluginImpl&lt;MyPlugin, CheckStatusWrapper&gt;</i></font>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt"><i>{</i></font></p>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt"><i>public:</i></font></p>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt"><i>explicit
MyPlugin(<a href="#PluginConfig">IPluginConfig</a>* cnf) throw()</i></font></p>
MyPlugin(<a href="#PluginConfig">IPluginConfig</a>* cnf) noexcept</i></font></p>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt"><i>:
config(cnf), refCounter(0), owner(NULL)</i></font></p>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt"><i>{</i></font></p>
@ -1604,7 +1604,7 @@ ISomePlugin implementation</i></font></p>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt"><i>private:</i></font></p>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt"><i>IPluginConfig*
config;</i></font></p>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt"><i>FbSampleAtomic
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt"><i>std::atomic_int
refCounter;</i></font></p>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt"><i>IReferenceCounted*
owner;</i></font></p>
@ -2308,7 +2308,7 @@ interface main interface from which start all operations with
firebird API.</font></p>
<ol>
<li><p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt">IStatus*
getStatus() - get instance if <a href="#Status">Status</a>
getStatus() - get instance of <a href="#Status">Status</a>
interface.</font></p>
<li><p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt">IProvider*
getDispatcher() - get instance of <a href="#Provider">Provider</a>
@ -2777,7 +2777,7 @@ interface replaces (partially) isc_stmt_handle.</font></p>
behavior.</font></p>
<li><p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt">void
setCursorName(StatusType* status, const char* name) replaces
isc_dsql_set_cursor_name().</font>
isc_dsql_set_cursor_name().</font>
</p>
<li><p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt">void
free(StatusType* status) free statement, releases interface on
@ -3615,6 +3615,20 @@ plugin or key holder plugin.</font></p>
is passed in both directions. The source of a key receives
dataLength bytes of data and may send up to bufferLength bytes into
buffer returning actual number of bytes placed into buffer.</font></p>
<li><p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt">
void dispose() - invoked when interface is not needed any more. Helps
to avoid memory leaks in statefull inrefaces.
</font></p>
<li><p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt">
unsigned afterAttach(StatusType* status, const char* dbName, const IStatus* attStatus) -
invoked after attach on client system. NULL in attStatus means attach was successful
but afterAttach() is anyway invoked in order to let plugin perform required cleanup.
The following values may be returned by this function:
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt">NO_RETRY -
do not repeat attempts to attach to database.</font></p>
<p style="margin-bottom: 0cm"><font size="4" style="font-size: 14pt">DO_RETRY -
retry attach (ignored when function was called without attStatus).</font></p>
</font></p>
</ol>
<p style="margin-bottom: 0cm"><br/>
@ -3817,4 +3831,4 @@ release of it.</font></p>
</p>
</body>
</html>
</html>

View File

@ -0,0 +1,24 @@
# Aggregate Functions
## ANY_VALUE (Firebird 6.0)
`ANY_VALUE` is a non-deterministic aggregate function that returns its expression for an arbitrary
record from the grouped rows.
`NULLs` are ignored. It's returned only in the case of none evaluated records having a non-null value.
Syntax:
```
<any value> ::= ANY_VALUE(<expression>)
```
Example:
```
select department,
any_value(employee) employee
from employee_department
group by department
```

View File

@ -371,7 +371,7 @@ Function:
Format:
CRYPT_HASH( <any value> USING <algorithm> )
algorithm ::= { MD5 | SHA1 | SHA256 | SHA512 }
algorithm ::= { MD5 | SHA1 | SHA256 | SHA512 | SHA3_224 | SHA3_256 | SHA3_384 | SHA3_512 }
Important:
- This function returns VARCHAR strings with OCTETS charset with length depended on algorithm.

View File

@ -0,0 +1,103 @@
# CALL statement (FB 6.0)
`CALL` statement is similar to `EXECUTE PROCEDURE`, but allow the caller to get specific output parameters, or none.
When using the positional or mixed parameter passing, output parameters follows the input ones.
When passing `NULL` to output parameters, they are ignored, and in the case of DSQL, not even returned.
In DSQL output parameters are specified using `?`, and in PSQL using the target variables or parameters.
## Syntax
```
<call statement> ::=
CALL [<package name> .] <procedure name> (<arguments>)
<arguments> ::=
<positional arguments> |
[ {<positional arguments>,} ] <named arguments>
<positional arguments> ::=
<value or default> [ {, <value or default>}... ]
<named arguments> ::=
<named argument> [ {, <named argument>}... ]
<named argument> ::=
<argument name> => <value or default>
<value or default> ::=
<value> |
DEFAULT
```
## Examples
```
create or alter procedure insert_customer (
last_name varchar(30),
first_name varchar(30)
) returns (
id integer,
full_name varchar(62)
)
as
begin
insert into customers (last_name, first_name)
values (:last_name, :first_name)
returning id, last_name || ', ' || first_name
into :id, :full_name;
end
```
```
-- Not all output parameters are necessary.
call insert_customer(
'LECLERC',
'CHARLES',
?)
```
```
-- Ignore first output parameter (using NULL) and get the second.
call insert_customer(
'LECLERC',
'CHARLES',
null,
?)
```
```
-- Ignore ID output parameter.
call insert_customer(
'LECLERC',
'CHARLES',
full_name => ?)
```
```
-- Pass inputs and get outputs using named arguments.
call insert_customer(
last_name => 'LECLERC',
first_name => 'CHARLES',
last_name => ?,
id => ?)
```
```
create or alter procedure do_something_and_insert_customer returns (
out_id integer,
out_full_name varchar(62)
)
as
declare last_name varchar(30);
declare first_name varchar(30);
begin
call insert_customer(
last_name,
first_name,
out_id,
full_name => out_full_name);
end
```

View File

@ -70,10 +70,14 @@ Usage:
CLIENT_HOST | The wire protocol host name of remote client. Value is
| returned for all supported protocols.
|
CLIENT_OS_USER | Remote OS user name
|
CLIENT_PID | Process ID of remote client application
|
CLIENT_PROCESS | Process name of remote client application
|
CLIENT_VERSION | Version of the client library used by client application
|
DB_NAME | Canonical name of current database. It is either alias
| name if connectivity via file names is not allowed or
| fully expanded database file name otherwise.
@ -138,6 +142,12 @@ Usage:
|
DECFLOAT_TRAPS | Exceptional conditions in operations with DECFLOAT
| values that cause a trap.
|
PAGES_ALLOCATED | Current value of allocated pages in the database.
|
PAGES_USED | Current value of allocated pages in the database.
|
PAGES_FREE | Current value of free pages in the database.
Notes:
To prevent DoS attacks against Firebird Server you are not allowed to have

View File

@ -603,3 +603,66 @@ ALTER TABLE <name> ... [ {ENABLE | DISABLE} PUBLICATION ]
Defines whether replication is enabled for the specified table.
If not specified in the CREATE TABLE statement, the database-level default behaviour is applied.
24) Added the ability to change deterministic and sql security option without specifying the entire body of the function.
(Alexander Zhdanov)
ALTER FUNCTION <name> [ {DETERMINISTIC | NOT DETERMINISTIC} ] [ SQL SECURITY {DEFINER | INVOKER} | DROP SQL SECURITY ]
25) Added the ability to change sql security option without specifying the entire body of the procedure
(Alexander Zhdanov)
ALTER PROCEDURE <name> SQL SECURITY {DEFINER | INVOKER} | DROP SQL SECURITY
26) Added the ability to change sql security option without specifying the entire body of the package
(Alexander Zhdanov)
ALTER PACKAGE <name> SQL SECURITY {DEFINER | INVOKER} | DROP SQL SECURITY
27) Added OWNER clause to CREATE DATABASE statement.
(Dmitry Sibiryakov)
<db_initial_option> list is expanded by "OWNER username" clause which allows to set an owner user name for the created database.
Only users with administrator rights can use this option.
28) COLLATE clause can be used as a part of character data type as per SQL standard.
(Dmitry Sibiryakov)
If is used twice, an error is returned.
DDL enhancements in Firebird v6.
--------------------------------
1) DROP [IF EXISTS]
Using subclause IF EXISTS, it's now possible to try to drop objects and do not get errors when they did not exist.
For ALTER TABLE ... DROP subclause, DDL triggers are not fired if there are only DROP IF EXISTS subclauses and all
of them are related to non existing columns or constraints.
For others commands where IF EXISTS is part of the main command, DDL triggers are not fired when the object
did not exist.
The following statements are supported:
DROP EXCEPTION [IF EXISTS] <exception>
DROP INDEX [IF EXISTS] <index>
DROP PROCEDURE [IF EXISTS] <procedure>
DROP TABLE [IF EXISTS] <table>
DROP TRIGGER [IF EXISTS] <trigger>
DROP VIEW [IF EXISTS] <view>
DROP FILTER [IF EXISTS] <filter>
DROP DOMAIN [IF EXISTS] <domain>
DROP [EXTERNAL] FUNCTION [IF EXISTS] <function>
DROP SHADOW [IF EXISTS] <shadow>
DROP ROLE [IF EXISTS] <role>
DROP GENERATOR [IF EXISTS] <generator>
DROP SEQUENCE [IF EXISTS] <sequence>
DROP COLLATION [IF EXISTS] <collation>
DROP USER [IF EXISTS] <user> [USING PLUGIN <plugin>]
DROP PACKAGE [IF EXISTS] <package>
DROP PACKAGE BODY [IF EXISTS] <package>
DROP [GLOBAL] MAPPING [IF EXISTS] <mapping>
ALTER TABLE <table> DROP [IF EXISTS] <column>
ALTER TABLE <table> DROP CONSTRAINT [IF EXISTS] <constraint>

View File

@ -0,0 +1,68 @@
# DECLARE VARIABLE initializer enhancements (FB 6.0)
Up to Firebird 5.0, variables could be declared and initialized in the same statement, however only simple
expressions (the same as allowed in a DOMAIN's DEFAULT clause) were allowed as initializers.
This limitation has been removed in Firebird 6.0, allowing the use of any value expression as initializer.
## Syntax
```
DECLARE [VARIABLE] <varname> <type> [{ = | DEFAULT } <value>];
```
## Notes
Previously declared variables can be used in the initializer expression of following variables.
A variable initializer may call subroutines, and these subroutines may read and write previously
declared variables.
A subroutine used in an initializer may also write to variables declared after the one being
initialized, but in this case their values will be overwritten when their initializers are
executed, even if they don't have explicit initializers.
```
-- This block will return (<null>, 2) as values of v1 and v2 assigned in sf1 will
-- be overwritten by their initializer after sf1 is called.
execute block returns (o1 integer, o2 integer)
as
declare function sf1 returns integer;
declare v0 integer = sf1();
declare v1 integer;
declare v2 integer = 2;
declare function sf1 returns integer
as
begin
v1 = 10;
v2 = 20;
return 0;
end
begin
o1 = v1;
o2 = v2;
suspend;
end
```
It's an error if a subroutine reads a variable declared after the one being initialized like in the
following example.
```
-- When sf1 is called, v1 is not yet initialized.
execute block
as
declare function sf1 returns integer;
declare v0 integer = sf1();
declare v1 integer;
declare function sf1 returns integer
as
begin
return v1;
end
begin
end
```

View File

@ -100,7 +100,6 @@ following:
insert into objects (id, name) overriding system value values (11, 'Laptop');
OVERRIDING also supports a subclause to be used with BY DEFAULT columns, to ignore the value passed in INSERT and use
the defined sequence:
OVERRIDING also supports a subclause to ignore the value passed in INSERT and use the defined sequence:
insert into objects (id, name) overriding user value values (12, 'Laptop'); -- 12 is not used

View File

@ -0,0 +1,6 @@
New Database Parameter Block items:
1. isc_dpb_owner :
Used for createDatabase() call to set the owner for the new database
to be different from user set with isc_user_name.
Can be used only by users with admin rights.

View File

@ -376,3 +376,32 @@ Firebird 4.0
TOTALORDER *
TRAPS *
ZONE
Firebird 5.0
------------
Added as non-reserved words:
LOCKED
OPTIMIZE
QUARTER
TARGET
TIMEZONE_NAME
UNICODE_CHAR
UNICODE_VAL
Firebird 6.0
------------
Added as reserved words:
CALL
Added as non-reserved words:
ANY_VALUE
FORMAT
Moved from reserved words to non-reserved:
OWNER

View File

@ -0,0 +1,73 @@
# Named arguments for function and procedure calling (FB 6.0)
Named arguments allows you to specify function and procedure arguments by their names, rather than only
by their positions.
It is especially useful when the routine have a lot of parameters and you want to specify them in arbitrary
order or not specify some of those who have default values.
As the positional syntax, all arguments without default values are required to be present in the call.
A call can use positional, named or mixed arguments. In mixed syntax, positional arguments must appear before
named arguments.
## Syntax
```
<function call> ::=
[<package name> .] <function_name>( [<arguments>] )
<procedure selection> ::=
[<package name> .] <procedure_name> [( <arguments> )]
<execute procedure> ::=
EXECUTE PROCEDURE [<package name> .] <procedure name>
[{ (<arguments>) | <arguments> }]
[RETURNING_VALUES ...]
<arguments> ::=
<positional arguments> |
[ {<positional arguments>,} ] <named arguments>
<positional arguments> ::=
<value or default> [ {, <value or default>}... ]
<named arguments> ::=
<named argument> [ {, <named argument>}... ]
<named argument> ::=
<argument name> => <value or default>
<value or default> ::=
<value> |
DEFAULT
```
## Examples
```
select function_name(parameter2 => 'Two', parameter1 => 1)
from rdb$database
```
```
select function_name(1, parameter2 => 'Two')
from rdb$database
```
```
select function_name(default, parameter2 => 'Two')
from rdb$database
```
```
execute procedure insert_customer(
last_name => 'SCHUMACHER',
first_name => 'MICHAEL')
```
```
select *
from get_customers(city_id => 10, last_name => 'SCHUMACHER')
```

View File

@ -22,6 +22,28 @@ A new session may be started when a session is already active. In that case, it
To analyze the collected data, the user must flush the data to the snapshot tables, which can be done by finishing or pausing a session (with `FLUSH` parameter set to `TRUE`), or calling `RDB$PROFILER.FLUSH`. Data is flushed using an autonomous transaction (a transaction started and finished for the specific purpose of profiler data update).
## Important
When the profiler is active, there is an overhead that makes everything slower.
This overhead varies depending on OS, kernel version and CPU hardware and it's difficult to predict.
But sometimes this overhead may be very high, say, greater than 100%.
If this happens in Linux, you may see what clock source it's using with this command:
```
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
```
If result is different than `tsc`, that may be the cause of this problem.
You can see [here](https://access.redhat.com/solutions/18627) how to change clocksource, but you must understand
it may have others consequences.
Another possible source of slowdown in Linux is [this bug](https://bugzilla.kernel.org/show_bug.cgi?id=198961).
## Example usage
Below is a sample profile session and queries for data analysis.
```
@ -265,6 +287,7 @@ Below is the list of tables that stores profile data.
- `CURSOR_ID` type `INTEGER` - Cursor ID
- `RECORD_SOURCE_ID` type `INTEGER` - Record source ID
- `PARENT_RECORD_SOURCE_ID` type `INTEGER` - Parent record source ID
- `LEVEL` type `INTEGER` - Indentation level for the record source
- `ACCESS_PATH` type `VARCHAR(255) CHARACTER SET UTF8` - Access path for the record source
- Primary key: `PROFILE_ID, STATEMENT_ID, CURSOR_ID, RECORD_SOURCE_ID`
@ -419,6 +442,7 @@ select rstat.profile_id,
cur.column_num cursor_column_num,
rstat.record_source_id,
recsrc.parent_record_source_id,
recsrc.level,
recsrc.access_path,
cast(sum(rstat.open_counter) as bigint) open_counter,
min(rstat.open_min_elapsed_time) open_min_elapsed_time,
@ -461,6 +485,7 @@ select rstat.profile_id,
cur.column_num,
rstat.record_source_id,
recsrc.parent_record_source_id,
recsrc.level,
recsrc.access_path
order by coalesce(sum(rstat.open_total_elapsed_time), 0) + coalesce(sum(rstat.fetch_total_elapsed_time), 0) desc
```

View File

@ -46,9 +46,9 @@ DELETE FROM <sometable>
## Notes
As it happens with subclauses `FIRST`/`SKIP`/`ROWS`/`OFFSET`/`FETCH` record lock
(and "skip locked" check) is done in between of skip (`SKIP`/`ROWS`/`OFFSET`/`FETCH`) and
limit (`FIRST`/`ROWS`/`OFFSET`/`FETCH`) checks.
If statement have both `SKIP LOCKED` and `SKIP`/`ROWS` subclauses, some locked rows
could be skipped before `SKIP`/`ROWS` subclause would account it, thus skipping more
rows than specified in `SKIP`/`ROWS`.
## Examples

View File

@ -0,0 +1,46 @@
# RDB$SQL package (FB 6.0)
`RDB$SQL` is a package with utility routines to work with dynamic SQL.
## Procedure `EXPLAIN`
`RDB$SQL.EXPLAIN` returns tabular information of a query's plan, without execute the query.
Since `SQL` text generally is multi-line string and have quotes, you may use `<alternate string literal>`
(strings prefixed by `Q`) as a way to make escape easy.
Input parameters:
- `SQL` type `BLOB SUB_TYPE TEXT CHARACTER SET UTF8 NOT NULL` - query statement
Output parameters:
- `PLAN_LINE` type `INTEGER NOT NULL` - plan's line order
- `RECORD_SOURCE_ID` type `BIGINT NOT NULL` - record source id
- `PARENT_RECORD_SOURCE_ID` type `BIGINT` - parent record source id
- `LEVEL` type `INTEGER NOT NULL` - indentation level (may have gaps in relation to parent's level)
- `PACKAGE_NAME` type `RDB$PACKAGE_NAME` - package name of a stored procedure
- `OBJECT_NAME` type `RDB$RELATION_NAME` - object (table, procedure) name
- `ALIAS` type `RDB$RELATION_NAME` - alias name
- `RECORD_LENGTH` type `INTEGER` - record length for the record source
- `KEY_LENGTH` type `INTEGER` - key length for the record source
- `ACCESS_PATH` type `VARCHAR(255) CHARACTER SET UTF8 NOT NULL` - friendly plan description
```
select *
from rdb$sql.explain('select * from employees where id = ?');
```
```
select *
from rdb$sql.explain(q'{
select *
from (
select name from employees
union all
select name from customers
)
where name = ?
}');
```
# Authors
- Adriano dos Santos Fernandes

View File

@ -18,11 +18,16 @@ Format:
<trim character> ::=
<value expression>
<multi-character trim function> ::=
{ BTRIM | LTRIM | RTRIM } <left paren> <value expression> [ <comma> <trim character> ] <right paren>
Syntax Rules:
1) If <trim specification> is not specified, BOTH is assumed.
2) If <trim character> is not specified, ' ' is assumed.
3) If <trim specification> and/or <trim character> is specified, FROM should be specified.
4) If <trim specification> and <trim character> is not specified, FROM should not be specified.
5) multi-character trim function accepts a sequence of characters as the second argument and will remove all
leading, trailing, or both occurrences of any of these characters, regardless of their ordering.
Examples:
A)
@ -36,3 +41,8 @@ B)
trim(rdb$relation_name) || ' is a system table'
from rdb$relations
where rdb$system_flag = 1;
C)
select
ltrim('baobab is a tree', 'aboe')
from rdb$database;

View File

@ -25,6 +25,7 @@
*/
#include "../interfaces/ifaceExamples.h"
#include <atomic>
namespace
{
@ -67,7 +68,7 @@ private:
class CryptKeyHolder : public IKeyHolderPluginImpl<CryptKeyHolder, CheckStatusWrapper>
{
public:
explicit CryptKeyHolder(IPluginConfig* cnf) throw()
explicit CryptKeyHolder(IPluginConfig* cnf) noexcept
: callbackInterface(this), named(NULL), tempStatus(master->getStatus()),
config(cnf), key(0), owner(NULL)
{
@ -137,7 +138,7 @@ private:
: holder(p)
{ }
unsigned int callback(unsigned int, const void*, unsigned int length, void* buffer)
unsigned int callback(unsigned int, const void*, unsigned int length, void* buffer) override
{
ISC_UCHAR k = holder->getKey();
if (!k)
@ -189,7 +190,7 @@ private:
IPluginConfig* config;
ISC_UCHAR key;
FbSampleAtomic refCounter;
std::atomic_int refCounter;
IReferenceCounted* owner;
IConfigEntry* getEntry(CheckStatusWrapper* status, const char* entryName);

View File

@ -25,6 +25,7 @@
*/
#include "../interfaces/ifaceExamples.h"
#include <atomic>
using namespace Firebird;
@ -67,7 +68,7 @@ private:
class DbCrypt : public IDbCryptPluginImpl<DbCrypt, CheckStatusWrapper>
{
public:
explicit DbCrypt(IPluginConfig* cnf) throw()
explicit DbCrypt(IPluginConfig* cnf) noexcept
: config(cnf), key(0), refCounter(0), owner(NULL)
{
config->addRef();
@ -121,7 +122,7 @@ private:
char savedKeyName[32];
ISC_UCHAR key;
FbSampleAtomic refCounter;
std::atomic_int refCounter;
IReferenceCounted* owner;
void noKeyError(CheckStatusWrapper* status);

View File

@ -61,7 +61,7 @@ KEYGEN_objects=$(INTERMED)/keygen.o
TCWRAP_objects=$(INTERMED)/TcWrapper.o
KEY_AUTH_objects=$(INTERMED)/ExtAuth.o
CXXFLAGS=-std=c++17 -pthread -I$(ROOT)/include -fPIC $(TOMCRYPT_COMPILE)
CXXFLAGS=-std=c++11 -pthread -I$(ROOT)/include -fPIC $(TOMCRYPT_COMPILE)
LDFLAGS=-pthread -L$(LIB) -Wl,-rpath,'$$ORIGIN/../lib' $(TOMCRYPT_LINK)
LINK_LIBS=-lfbclient -ltomcrypt -ltommath

View File

@ -163,7 +163,7 @@ public:
return ptr != r.ptr;
}
void clear() throw() // Used after detach/commit/close/etc., i.e. release() not needed
void clear() noexcept // Used after detach/commit/close/etc., i.e. release() not needed
{
ptr = NULL;
}

View File

@ -31,6 +31,7 @@
*/
#include "ifaceExamples.h"
#include <atomic>
static IMaster* master = fb_get_master_interface();
@ -66,7 +67,7 @@ private:
}
};
FbSampleAtomic referenceCounter;
std::atomic_int referenceCounter;
// we are using only single field (varchar) in a sample, therefore no strong alignment requirements.
// In general message alignment is the maximum field alignment in that message.

View File

@ -36,6 +36,7 @@
static IMaster* master = fb_get_master_interface();
static IDecFloat16* idf16 = NULL;
static IInt128* ii128 = NULL;
int main()
{
@ -56,6 +57,7 @@ int main()
try
{
idf16 = master->getUtilInterface()->getDecFloat16(&status);
ii128 = master->getUtilInterface()->getInt128(&status);
att = prov->attachDatabase(&status, dbName, 0, NULL);
tra = att->startTransaction(&status, 0, NULL);
@ -79,6 +81,7 @@ int main()
(FB_VARCHAR(31), relationName)
(FB_VARCHAR(100), description)
(FB_DECFLOAT16, df16)
(FB_INT128, iHuge)
) output(&status, master);
input.clear();
@ -86,25 +89,28 @@ int main()
rs = att->openCursor(&status, tra, 0,
"select rdb$relation_id, rdb$relation_name, rdb$description,"
" cast (rdb$relation_id as decfloat(16)) * 0.05 as df16"
" cast (rdb$relation_id as decfloat(16)) * 0.05 as df16,"
" cast (rdb$relation_id as int128) * 212778764464767 as iHuge"
" from rdb$relations"
" where rdb$system_flag = ?"
" order by rdb$relation_id",
SAMPLES_DIALECT, input.getMetadata(), input.getData(), output.getMetadata(), NULL, 0);
printf(" ID Name/comment\n");
printf(" ID Name datatype-tests (perform some arithmetics) /comment\n");
while (rs->fetchNext(&status, output.getData()) == IStatus::RESULT_OK)
{
unsigned lRelName = output->relationNameNull ? 0 : output->relationName.length;
unsigned lDesc = output->descriptionNull ? 0 : output->description.length;
char t16[IDecFloat16::STRING_SIZE];
idf16->toString(&status, &output->df16, sizeof(t16), t16);
char huge[IInt128::STRING_SIZE];
ii128->toString(&status, &output->iHuge, -3, sizeof(huge), huge);
printf("%4d %*.*s%c%*.*s (%s)\n", output->relationId,
printf("%4d %*.*s [Decfloat16:%s Int128:%s] %c%*.*s\n", output->relationId,
lRelName, lRelName, output->relationName.str,
t16, huge,
lDesc ? '/' : ' ',
lDesc, lDesc, output->description.str,
t16);
lDesc, lDesc, output->description.str);
}
rs->close(&status);

View File

@ -26,6 +26,7 @@
*/
#include "ifaceExamples.h"
#include <atomic>
#ifndef WIN32
#include <unistd.h>
@ -115,7 +116,7 @@ namespace
status.dispose();
}
FbSampleAtomic refCounter;
std::atomic_int refCounter;
IAttachment* attachment;
volatile int counter;
ThrowStatusWrapper status;

View File

@ -28,13 +28,6 @@
#include <stdio.h>
#include <string.h>
#if defined(__cplusplus) && (__cplusplus >= 201103L)
#include <atomic>
typedef std::atomic_int FbSampleAtomic;
#else
typedef int FbSampleAtomic;
#endif
#include <firebird/Interface.h>
using namespace Firebird;

View File

@ -33,7 +33,7 @@ FBCLIENT = $(FIREBIRD)/lib/libfbclient.so
# General Compiler and linker Defines for Linux
# ---------------------------------------------------------------------
CXX = c++
CXXFLAGS= -c -Wall -g3 -std=c++17 -fno-rtti $(INCLUDE)
CXXFLAGS= -c -Wall -g3 -std=c++11 -fno-rtti $(INCLUDE)
RM = rm -f
#

View File

@ -173,9 +173,6 @@ Program Description
12.batch_isc.cpp Working with batch interface from ISC API.
FbSampleAtomic typedef required in many examples.
dbcrypt - a sample of XOR database encryption (do not use in production!!!)

View File

@ -128,8 +128,7 @@ FB_UDR_BEGIN_FUNCTION(sum_args)
// Get a reference to the return value.
ISC_LONG& ret = *(ISC_LONG*) (out + outOffset);
// The return value is automatically initialized to 0.
///ret = 0;
ret = 0;
for (unsigned i = 0; i < inCount; ++i)
{

View File

@ -94,39 +94,84 @@ void DefAction::generate(const ActionParametersBlock& apb, unsigned ident)
switch(apb.language)
{
case LANGUAGE_C:
if (!apb.statusName.empty())
if (!apb.method->statusName.empty())
{
identify(apb, ident);
fprintf(apb.out, "CLOOP_setVersionError(%s, \"%s%s\", cloopVTable->version, %d);\n",
apb.statusName.c_str(), apb.prefix.c_str(),
apb.method->statusName.c_str(), apb.prefix.c_str(),
apb.interface->name.c_str(), apb.method->version);
}
break;
case LANGUAGE_CPP:
if (!apb.statusName.empty())
if (!apb.method->statusName.empty())
{
identify(apb, ident);
fprintf(apb.out, "%s::setVersionError(%s, \"%s%s\", cloopVTable->version, %d);\n",
apb.exceptionClass.c_str(), apb.statusName.c_str(), apb.prefix.c_str(),
apb.exceptionClass.c_str(), apb.method->statusName.c_str(), apb.prefix.c_str(),
apb.interface->name.c_str(), apb.method->version);
identify(apb, ident);
fprintf(apb.out, "%s::checkException(%s);\n",
apb.exceptionClass.c_str(), apb.statusName.c_str());
apb.exceptionClass.c_str(), apb.method->statusName.c_str());
}
break;
case LANGUAGE_PASCAL:
if (!apb.statusName.empty() && !apb.exceptionClass.empty())
if (!apb.method->statusName.empty() && !apb.exceptionClass.empty())
{
identify(apb, ident);
fprintf(apb.out, "%s.setVersionError(%s, \'%s%s\', vTable.version, %d);\n",
apb.exceptionClass.c_str(), apb.statusName.c_str(), apb.prefix.c_str(),
apb.exceptionClass.c_str(), apb.method->statusName.c_str(), apb.prefix.c_str(),
apb.interface->name.c_str(), apb.method->version);
}
break;
}
break;
case DEF_IGNORE:
if (apb.method->returnTypeRef.token.type != Token::TYPE_VOID ||
apb.method->returnTypeRef.isPointer)
{
identify(apb, ident);
switch(apb.language)
{
case LANGUAGE_C:
case LANGUAGE_CPP:
fprintf(apb.out, "return 0;\n");
break;
case LANGUAGE_PASCAL:
{
const char* sResult = "nil";
if (!apb.method->returnTypeRef.isPointer)
{
switch (apb.method->returnTypeRef.token.type)
{
case Token::TYPE_STRING:
break;
case Token::TYPE_BOOLEAN:
sResult = "false";
break;
case Token::TYPE_IDENTIFIER:
if (apb.method->returnTypeRef.type == BaseType::TYPE_INTERFACE)
break;
// fallthru
default:
sResult = "0";
break;
}
}
fprintf(apb.out, "Result := %s;\n", sResult);
}
break;
}
}
break;
}
}

View File

@ -37,7 +37,6 @@ struct ActionParametersBlock
Language language;
const std::string& prefix;
const std::string& exceptionClass;
const std::string& statusName;
Interface* interface;
Method* method;
};
@ -91,7 +90,7 @@ public:
class DefAction : public Action
{
public:
enum DefType { DEF_NOT_IMPLEMENTED };
enum DefType { DEF_NOT_IMPLEMENTED, DEF_IGNORE };
DefAction(DefType dt)
: defType(dt)

View File

@ -357,15 +357,8 @@ void CppGenerator::generate()
fprintf(out, "\n\t\t");
string statusName;
if (!method->parameters.empty() &&
parser->exceptionInterface &&
method->parameters.front()->typeRef.token.text == parser->exceptionInterface->name)
{
statusName = method->parameters.front()->name;
if (!method->statusName.empty())
fprintf(out, "template <typename StatusType> ");
}
fprintf(out, "%s %s(",
convertType(method->returnTypeRef).c_str(), method->name.c_str());
@ -379,7 +372,7 @@ void CppGenerator::generate()
if (k != method->parameters.begin())
fprintf(out, ", ");
if (k == method->parameters.begin() && !statusName.empty())
if (k == method->parameters.begin() && !method->statusName.empty())
fprintf(out, "StatusType* %s", parameter->name.c_str());
else
{
@ -397,7 +390,7 @@ void CppGenerator::generate()
fprintf(out, "\t\t\t{\n");
const string exceptionClass("StatusType");
ActionParametersBlock apb = {out, LANGUAGE_CPP, prefix, exceptionClass, statusName, interface, method};
ActionParametersBlock apb = {out, LANGUAGE_CPP, prefix, exceptionClass, interface, method};
if (method->notImplementedAction)
method->notImplementedAction->generate(apb, 4);
@ -419,11 +412,11 @@ void CppGenerator::generate()
fprintf(out, "\t\t\t}\n");
}
if (!statusName.empty())
if (!method->statusName.empty())
{
fprintf(out, "\t\t\t");
fprintf(out, "StatusType::clearException(%s)", statusName.c_str());
fprintf(out, "StatusType::clearException(%s)", method->statusName.c_str());
fprintf(out, ";\n");
}
@ -694,7 +687,19 @@ void CppGenerator::generate()
}
}
fprintf(out, ")%s = 0;\n", (method->isConst ? " const" : ""));
fprintf(out, ")%s", (method->isConst ? " const" : ""));
if (method->stubAction)
{
const string exceptionClass("StatusType");
ActionParametersBlock apb = {out, LANGUAGE_CPP, prefix, exceptionClass, interface, method};
fprintf(out, "\n\t\t{\n");
method->stubAction->generate(apb, 3);
fprintf(out, "\t\t}\n");
}
else
fprintf(out, " = 0;\n");
}
fprintf(out, "\t};\n");
@ -1184,7 +1189,10 @@ void PascalGenerator::generate()
if (!isProcedure)
fprintf(out, ": %s", convertType(method->returnTypeRef).c_str());
fprintf(out, "; virtual; abstract;\n");
fprintf(out, "; virtual;");
if (!method->stubAction)
fprintf(out, " abstract;");
fprintf(out, "\n");
}
fprintf(out, "\tend;\n\n");
@ -1209,15 +1217,6 @@ void PascalGenerator::generate()
bool isProcedure = method->returnTypeRef.token.type == Token::TYPE_VOID &&
!method->returnTypeRef.isPointer;
string statusName;
if (!method->parameters.empty() &&
parser->exceptionInterface &&
method->parameters.front()->typeRef.token.text == parser->exceptionInterface->name)
{
statusName = method->parameters.front()->name;
}
fprintf(out, "%s %s.%s(",
(isProcedure ? "procedure" : "function"),
escapeName(interface->name, true).c_str(),
@ -1248,8 +1247,7 @@ void PascalGenerator::generate()
{
fprintf(out, "\tif (vTable.version < %d) then begin\n", method->version);
ActionParametersBlock apb = {out, LANGUAGE_PASCAL, prefix, exceptionClass,
statusName, interface, method};
ActionParametersBlock apb = {out, LANGUAGE_PASCAL, prefix, exceptionClass, interface, method};
if (method->notImplementedAction)
method->notImplementedAction->generate(apb, 2);
@ -1290,8 +1288,8 @@ void PascalGenerator::generate()
if (ident > 1)
fprintf(out, "\tend;\n");
if (!statusName.empty() && !exceptionClass.empty())
fprintf(out, "\t%s.checkException(%s);\n", exceptionClass.c_str(), escapeName(statusName).c_str());
if (!method->statusName.empty() && !exceptionClass.empty())
fprintf(out, "\t%s.checkException(%s);\n", exceptionClass.c_str(), escapeName(method->statusName).c_str());
fprintf(out, "end;\n\n");
}
@ -1315,6 +1313,8 @@ void PascalGenerator::generate()
bool isProcedure = method->returnTypeRef.token.type == Token::TYPE_VOID &&
!method->returnTypeRef.isPointer;
ActionParametersBlock apb = {out, LANGUAGE_PASCAL, prefix, exceptionClass, interface, method};
fprintf(out, "%s %sImpl_%sDispatcher(this: %s",
(isProcedure ? "procedure" : "function"),
escapeName(interface->name, true).c_str(),
@ -1337,39 +1337,7 @@ void PascalGenerator::generate()
fprintf(out, "; cdecl;\n");
fprintf(out, "begin\n");
if (!isProcedure)
{
if (method->returnTypeRef.isPointer) {
fprintf(out, "\tResult := nil;\n");
}
else
{
const char* sResult;
switch (method->returnTypeRef.token.type)
{
case Token::TYPE_STRING:
sResult = "nil";
break;
case Token::TYPE_BOOLEAN:
sResult = "false";
break;
case Token::TYPE_IDENTIFIER:
if (method->returnTypeRef.type == BaseType::TYPE_INTERFACE)
{
sResult = "nil";
break;
}
// fallthru
default:
sResult = "0";
break;
}
fprintf(out, "\tResult := %s;\n", sResult);
}
}
DefAction(DefAction::DEF_IGNORE).generate(apb, 1);
if (!exceptionClass.empty())
fprintf(out, "\ttry\n\t");
@ -1411,8 +1379,35 @@ void PascalGenerator::generate()
fprintf(out, "\tend\n");
}
fprintf(out, "end;\n\n");
if (method->stubAction)
{
fprintf(out, "%s %sImpl.%s(",
(isProcedure ? "procedure" : "function"),
escapeName(interface->name, true).c_str(),
escapeName(method->name).c_str());
for (vector<Parameter*>::iterator k = method->parameters.begin();
k != method->parameters.end();
++k)
{
Parameter* parameter = *k;
fprintf(out, "%s%s",
k == method->parameters.begin() ? "" : "; ",
convertParameter(*parameter).c_str());
}
fprintf(out, ")");
if (!isProcedure)
fprintf(out, ": %s", convertType(method->returnTypeRef).c_str());
fprintf(out, ";\n");
fprintf(out, "begin\n");
method->stubAction->generate(apb, 1);
fprintf(out, "end;\n\n");
}
}
fprintf(out, "var\n");

View File

@ -112,6 +112,8 @@ Token& Lexer::getToken(Token& token)
token.type = Token::TYPE_CALL;
else if (token.text == "defaultAction")
token.type = Token::TYPE_DEFAULT_ACTION;
else if (token.text == "stub")
token.type = Token::TYPE_STUB;
// types
else if (token.text == "void")
token.type = Token::TYPE_VOID;

View File

@ -47,6 +47,7 @@ struct Token
TYPE_INTERFACE,
TYPE_NOT_IMPLEMENTED,
TYPE_NOT_IMPLEMENTED_ACTION,
TYPE_STUB,
TYPE_STRUCT,
TYPE_TYPEDEF,
TYPE_VERSION,

View File

@ -94,7 +94,7 @@ void Parser::parse()
}
}
// Check types.
// Check types, assign statusName to methods.
for (vector<Interface*>::iterator i = interfaces.begin(); i != interfaces.end(); ++i)
{
@ -115,6 +115,13 @@ void Parser::parse()
Parameter* parameter = *k;
checkType(parameter->typeRef);
}
if (!method->parameters.empty() &&
exceptionInterface &&
method->parameters.front()->typeRef.token.text == exceptionInterface->name)
{
method->statusName = method->parameters.front()->name;
}
}
}
}
@ -194,6 +201,7 @@ void Parser::parseItem()
{
Expr* notImplementedExpr = nullptr;
Action* notImplementedAction = nullptr;
Action* stubAction = nullptr;
std::string onError;
while (lexer->getToken(token).type == TOKEN('['))
@ -224,6 +232,12 @@ void Parser::parseItem()
notImplementedAction = parseAction(DefAction::DEF_NOT_IMPLEMENTED);
break;
case Token::TYPE_STUB:
if (stubAction)
syntaxError(token);
stubAction = parseAction(DefAction::DEF_IGNORE);
break;
default:
syntaxError(token);
break;
@ -248,7 +262,7 @@ void Parser::parseItem()
}
getToken(token, TOKEN('('));
parseMethod(typeRef, name, notImplementedExpr, onError, notImplementedAction);
parseMethod(typeRef, name, notImplementedExpr, onError, notImplementedAction, stubAction);
}
void Parser::parseConstant(const TypeRef& typeRef, const string& name)
@ -326,7 +340,7 @@ Action* Parser::parseDefAction(DefAction::DefType dt)
}
void Parser::parseMethod(const TypeRef& returnTypeRef, const string& name, Expr* notImplementedExpr,
const string& onError, Action* notImplementedAction)
const string& onError, Action* notImplementedAction, Action* stubAction)
{
Method* method = new Method();
interface->methods.push_back(method);
@ -336,6 +350,7 @@ void Parser::parseMethod(const TypeRef& returnTypeRef, const string& name, Expr*
method->version = interface->version;
method->notImplementedExpr = notImplementedExpr;
method->notImplementedAction = notImplementedAction;
method->stubAction = stubAction;
method->onErrorFunction = onError;
if (lexer->getToken(token).type != TOKEN(')'))

Some files were not shown because too many files have changed in this diff Show More