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:
commit
f561b80f25
20
.github/actions/adjust-snapshot-buildno/action.yml
vendored
Normal file
20
.github/actions/adjust-snapshot-buildno/action.yml
vendored
Normal 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
|
2
.github/workflows/changelog-generator.yml
vendored
2
.github/workflows/changelog-generator.yml
vendored
@ -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 }}
|
||||
|
252
.github/workflows/main.yml
vendored
252
.github/workflows/main.yml
vendored
@ -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
52
.github/workflows/qa.yml
vendored
Normal 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/
|
1
.github/workflows/tzdata-update.yml
vendored
1
.github/workflows/tzdata-update.yml
vendored
@ -14,6 +14,7 @@ jobs:
|
||||
matrix:
|
||||
branch:
|
||||
- master
|
||||
- v5.0-release
|
||||
- v4.0-release
|
||||
|
||||
steps:
|
||||
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -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
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "vcpkg"]
|
||||
path = vcpkg
|
||||
url = https://github.com/Microsoft/vcpkg.git
|
270
CHANGELOG.md
270
CHANGELOG.md
@ -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
|
||||
|
@ -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" ]
|
||||
|
@ -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\
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)"
|
||||
|
||||
|
@ -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 \
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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;}'`)
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
||||
*)
|
||||
|
||||
(*
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -147,7 +147,7 @@ Parameters specific to Firebird uninstalls
|
||||
firebird.conf
|
||||
databases.conf
|
||||
firebird.log
|
||||
security5.fdb
|
||||
security6.fdb
|
||||
fbtrace.conf
|
||||
replication.conf
|
||||
|
||||
|
@ -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
|
||||
|
||||
Это происходит намеренно. Эти файлы потенциально
|
||||
могут быть изменены пользователем и могут
|
||||
|
@ -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
@ -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}" ]
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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)
|
||||
|
@ -19,5 +19,3 @@
|
||||
#
|
||||
# All Rights Reserved.
|
||||
# Contributor(s): ______________________________________.
|
||||
|
||||
main
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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=
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
28
builds/posix/prefix.linux_loongarch
Normal file
28
builds/posix/prefix.linux_loongarch
Normal 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
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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}
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
@ -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>
|
||||
|
@ -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">
|
||||
|
168
builds/win32/msvc15/isql_static.vcxproj
Normal file
168
builds/win32/msvc15/isql_static.vcxproj
Normal 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>
|
95
builds/win32/msvc15/isql_static.vcxproj.filters
Normal file
95
builds/win32/msvc15/isql_static.vcxproj.filters
Normal 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>
|
201
builds/win32/msvc15/isql_test.vcxproj
Normal file
201
builds/win32/msvc15/isql_test.vcxproj
Normal 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>
|
22
builds/win32/msvc15/isql_test.vcxproj.filters
Normal file
22
builds/win32/msvc15/isql_test.vcxproj.filters
Normal 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>
|
@ -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
30
builds/win32/unzip.vbs
Normal 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
|
73
configure.ac
73
configure.ac
@ -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
|
||||
|
@ -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
111
doc/README.cast.format.md
Normal 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
|
||||
```
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 <database> -seq
|
||||
|
||||
Then the replica mode must be activated for the database copy. Two options are possible:
|
||||
|
||||
* gfix -replica read\_only <database> -- set up database as read-only replica
|
||||
|
@ -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
|
||||
|
@ -1512,7 +1512,7 @@ MyPlugin : public ISomePluginImpl<MyPlugin, CheckStatusWrapper></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>
|
||||
|
24
doc/sql.extensions/README.aggregate_functions.md
Normal file
24
doc/sql.extensions/README.aggregate_functions.md
Normal 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
|
||||
```
|
@ -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.
|
||||
|
103
doc/sql.extensions/README.call.md
Normal file
103
doc/sql.extensions/README.call.md
Normal 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
|
||||
```
|
@ -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
|
||||
|
@ -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>
|
||||
|
68
doc/sql.extensions/README.declare_var_initializer.md
Normal file
68
doc/sql.extensions/README.declare_var_initializer.md
Normal 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
|
||||
```
|
@ -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
|
||||
|
6
doc/sql.extensions/README.isc_dpb_xxx
Normal file
6
doc/sql.extensions/README.isc_dpb_xxx
Normal 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.
|
@ -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
|
||||
|
73
doc/sql.extensions/README.named_arguments.md
Normal file
73
doc/sql.extensions/README.named_arguments.md
Normal 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')
|
||||
```
|
@ -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
|
||||
```
|
||||
|
@ -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
|
||||
|
||||
|
46
doc/sql.extensions/README.sql_package.md
Normal file
46
doc/sql.extensions/README.sql_package.md
Normal 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
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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.
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
||||
#
|
||||
|
@ -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!!!)
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
59
extern/cloop/src/cloop/Action.cpp
vendored
59
extern/cloop/src/cloop/Action.cpp
vendored
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
3
extern/cloop/src/cloop/Action.h
vendored
3
extern/cloop/src/cloop/Action.h
vendored
@ -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)
|
||||
|
117
extern/cloop/src/cloop/Generator.cpp
vendored
117
extern/cloop/src/cloop/Generator.cpp
vendored
@ -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");
|
||||
|
2
extern/cloop/src/cloop/Lexer.cpp
vendored
2
extern/cloop/src/cloop/Lexer.cpp
vendored
@ -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;
|
||||
|
1
extern/cloop/src/cloop/Lexer.h
vendored
1
extern/cloop/src/cloop/Lexer.h
vendored
@ -47,6 +47,7 @@ struct Token
|
||||
TYPE_INTERFACE,
|
||||
TYPE_NOT_IMPLEMENTED,
|
||||
TYPE_NOT_IMPLEMENTED_ACTION,
|
||||
TYPE_STUB,
|
||||
TYPE_STRUCT,
|
||||
TYPE_TYPEDEF,
|
||||
TYPE_VERSION,
|
||||
|
21
extern/cloop/src/cloop/Parser.cpp
vendored
21
extern/cloop/src/cloop/Parser.cpp
vendored
@ -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
Loading…
Reference in New Issue
Block a user