Skip to content

Commit ee1327d

Browse files
authored
Merge branch 'master' into feat/rownum
2 parents 7412485 + 744f756 commit ee1327d

461 files changed

Lines changed: 8002 additions & 559 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.coderabbit.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,16 @@ reviews:
88
enabled: true
99
drafts: false
1010
base_branches: ["master", "IVORY_REL_5_STABLE"]
11+
path_filters:
12+
- "**/*.out" # Include test output files
13+
path_instructions:
14+
- path: "**/expected/*.out"
15+
instructions: |
16+
These are expected test outputs from pg_regress. Review for:
17+
- Correctness of query results
18+
- Proper Oracle compatibility behavior
19+
- Edge case coverage
20+
- Consistency with corresponding .sql test files
21+
- path: "**/sql/*.sql"
22+
instructions: |
23+
Test SQL files. Ensure comprehensive coverage of features.

.devcontainer/Dockerfile

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# IvorySQL Build and Test Container - Modern Ubuntu
2+
# Alternative to CentOS with same capabilities
3+
4+
FROM ubuntu:22.04
5+
6+
# Prevent interactive prompts
7+
ENV DEBIAN_FRONTEND=noninteractive
8+
9+
# Install build dependencies matching the workflow requirements
10+
RUN apt-get update && apt-get install -y \
11+
# Build tools
12+
build-essential git lcov bison flex pkg-config cppcheck \
13+
# For meson/ninja installation
14+
curl unzip \
15+
# Core dependencies
16+
libkrb5-dev libssl-dev libldap-dev libpam-dev \
17+
libxml2-dev libxslt-dev libreadline-dev libedit-dev \
18+
zlib1g-dev uuid-dev libossp-uuid-dev libuuid1 e2fsprogs \
19+
# ICU support
20+
libicu-dev \
21+
# Language support
22+
python3-dev python3-setuptools tcl-dev libperl-dev gettext \
23+
# Perl test modules
24+
libipc-run-perl libtime-hires-perl libtest-simple-perl \
25+
# LLVM/Clang
26+
llvm clang \
27+
# LZ4 compression
28+
liblz4-dev \
29+
# System libraries
30+
libselinux1-dev libsystemd-dev \
31+
# GSSAPI
32+
libgssapi-krb5-2 \
33+
# Locale support
34+
locales \
35+
# For dev containers
36+
sudo tini \
37+
&& rm -rf /var/lib/apt/lists/*
38+
39+
# Install meson and ninja from source (matching workflow versions)
40+
RUN curl -L "https://github.com/mesonbuild/meson/releases/download/1.0.1/meson-1.0.1.tar.gz" -o /tmp/meson-1.0.1.tar.gz \
41+
&& curl -L "https://github.com/ninja-build/ninja/releases/download/v1.10.1/ninja-linux.zip" -o /tmp/ninja-linux.zip \
42+
&& unzip -o /tmp/ninja-linux.zip -d /tmp \
43+
&& cp /tmp/ninja /usr/bin/ \
44+
&& tar xzf /tmp/meson-1.0.1.tar.gz -C /tmp \
45+
&& cd /tmp/meson-1.0.1 && python3 setup.py install \
46+
&& rm -rf /tmp/meson-1.0.1* /tmp/ninja*
47+
48+
# Set up locale
49+
RUN locale-gen en_US.UTF-8
50+
ENV LANG=en_US.UTF-8 \
51+
LANGUAGE=en_US:en \
52+
LC_ALL=en_US.UTF-8
53+
54+
# Create ivorysql user with matching host UID/GID (1000:1000)
55+
# and grant sudo privileges without password
56+
ARG USER_UID=1000
57+
ARG USER_GID=1000
58+
RUN groupadd -g ${USER_GID} ivorysql || true && \
59+
useradd -m -u ${USER_UID} -g ${USER_GID} -d /home/ivorysql -s /bin/bash ivorysql && \
60+
echo "ivorysql ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
61+
62+
# Set working directory
63+
WORKDIR /home/ivorysql/IvorySQL
64+
65+
# Switch to ivorysql user for builds
66+
USER ivorysql
67+
68+
# Default command
69+
ENTRYPOINT ["/usr/bin/tini", "--"]
70+
CMD ["/bin/bash"]

.devcontainer/devcontainer.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"name": "IvorySQL Dev",
3+
"dockerComposeFile": "../docker-compose.yaml",
4+
"service": "dev",
5+
"workspaceFolder": "/home/ivorysql/IvorySQL",
6+
"remoteUser": "ivorysql",
7+
"customizations": {
8+
"vscode": {
9+
"settings": {
10+
"terminal.integrated.defaultProfile.linux": "bash",
11+
"C_Cpp.default.configurationProvider": "ms-vscode.makefile-tools"
12+
},
13+
"extensions": [
14+
"ms-vscode.cpptools",
15+
"ms-vscode.makefile-tools",
16+
"twxs.cmake",
17+
"mhutchie.git-graph",
18+
"eamodio.gitlens"
19+
]
20+
}
21+
}
22+
}

.github/workflows/build.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ jobs:
1919
if: ${{ matrix.os == 'ubuntu-latest' }}
2020
run: |
2121
sudo apt-get update
22+
sudo apt-get install -y gcc-14 g++-14
23+
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 100
24+
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 100
2225
sudo apt-get install -y build-essential git lcov bison flex \
2326
libkrb5-dev libssl-dev libldap-dev libpam-dev python3-dev \
2427
tcl-dev libperl-dev gettext libxml2-dev libxslt-dev \
@@ -35,4 +38,4 @@ jobs:
3538
--with-ossp-uuid --with-libxml --with-libxslt --with-perl \
3639
--with-icu --with-libnuma --enable-injection-points
3740
- name: compile
38-
run: make
41+
run: make CFLAGS="$CFLAGS -Wshadow=compatible-local -Werror=missing-variable-declarations -Werror=maybe-uninitialized -Werror=unused-value -Werror=unused-but-set-variable -Werror=missing-prototypes -Werror=unused-variable"

README.md

Lines changed: 56 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,63 @@ We are committed to abiding by the principles of [open-source ways](https://open
2323
</br>
2424

2525
## Installation
26-
We recommend following our [Quick Start](https://docs.ivorysql.org/en/ivorysql-doc/v5.0/v5.0/3.1#quick-installation) for how to install and running IvorySQL.
26+
We recommend following our [Quick Start](https://docs.ivorysql.org/en/ivorysql-doc/v5.1/v5.1/3.1#quick-installation) for how to install and running IvorySQL.
2727

28-
Furthermore, for more detailed installation instructions, please refer to the [Installation Docs](https://docs.ivorysql.org/en/ivorysql-doc/v5.0/v5.0/4.1#introduction). We provide four installation methods for IvorySQL, as outlined below:
29-
- [Yum installation](https://docs.ivorysql.org/en/ivorysql-doc/v5.0/v5.0/4.1#Yum-installation)
30-
- [Docker installation](https://docs.ivorysql.org/en/ivorysql-doc/v5.0/v5.0/4.1#Docker-installation)
31-
- [Rpm installation](https://docs.ivorysql.org/en/ivorysql-doc/v5.0/v5.0/4.1#Rpm-installation)
32-
- [Source code installation](https://docs.ivorysql.org/en/ivorysql-doc/v5.0/v5.0/4.1#Source-code-installation)
28+
Furthermore, for more detailed installation instructions, please refer to the [Installation Docs](https://docs.ivorysql.org/en/ivorysql-doc/v5.1/v5.1/4.1#introduction). We provide four installation methods for IvorySQL, as outlined below:
29+
- [Yum installation](https://docs.ivorysql.org/en/ivorysql-doc/v5.1/v5.1/4.1#Yum-installation)
30+
- [Docker installation](https://docs.ivorysql.org/en/ivorysql-doc/v5.1/v5.1/4.1#Docker-installation)
31+
- [Rpm installation](https://docs.ivorysql.org/en/ivorysql-doc/v5.1/v5.1/4.1#Rpm-installation)
32+
- [Source code installation](https://docs.ivorysql.org/en/ivorysql-doc/v5.1/v5.1/4.1#Source-code-installation)
33+
34+
## Development with Docker
35+
36+
For a consistent development environment, we provide a Docker-based setup that includes all build dependencies.
37+
38+
### Quick Start
39+
40+
```bash
41+
# Start the development containers
42+
docker compose up -d
43+
44+
# Enter the development container
45+
docker compose exec dev bash
46+
47+
# Configure and build IvorySQL
48+
./configure --prefix=/home/ivorysql/ivorysql \
49+
--enable-debug --enable-cassert \
50+
--with-uuid=e2fs --with-libxml
51+
52+
make -j$(nproc)
53+
make install
54+
55+
# Initialize database in Oracle mode
56+
initdb -D data_ora -m oracle
57+
58+
# Start the server
59+
pg_ctl -D data_ora start
60+
61+
# Run tests
62+
make oracle-check
63+
```
64+
65+
### Meson Build (Alternative)
66+
67+
```bash
68+
# Enter the development container
69+
docker compose exec dev bash
70+
71+
# Configure with meson
72+
meson setup build -Dcassert=true -Dbuildtype=debug
73+
74+
# Build with ninja
75+
ninja -C build
76+
77+
# Run from build directory
78+
./build/src/backend/postgres --version
79+
```
80+
81+
Note: Meson requires a clean source tree. If you previously ran `./configure`,
82+
run `make distclean` first.
3383

3484
## Developer Formatting hooks and CI:
3585
- A pre-commit formatting hook is provided at `.githooks/pre-commit`. Enable it with `git config core.hooksPath .githooks`, or run `make code-format` (equivalently `bash tools/enable-git-hooks.sh`).

README_CN.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ IvorySQL 项目采用 Apache 2.0 许可协议发布,并鼓励各种形式的
2727
</br>
2828

2929
## 安装
30-
建议参考[快速入门](https://docs.ivorysql.org/cn/ivorysql-doc/v5.0/v5.0/3.1#quick-installation)了解如何安装和运行IvorySQL。
30+
建议参考[快速入门](https://docs.ivorysql.org/cn/ivorysql-doc/v5.1/v5.1/3.1#quick-installation)了解如何安装和运行IvorySQL。
3131

32-
此外,关于更详细的安装说明,请参阅[安装文档](https://docs.ivorysql.org/cn/ivorysql-doc/v5.0/v5.0/4.1#introduction)。我们提供以下四种 IvorySQL 的安装方法:
33-
- [Yum 安装](https://docs.ivorysql.org/cn/ivorysql-doc/v5.0/v5.0/4.1#yum源安装)
34-
- [Docker 安装](https://docs.ivorysql.org/cn/ivorysql-doc/v5.0/v5.0/4.1#docker安装)
35-
- [RPM 安装](https://docs.ivorysql.org/cn/ivorysql-doc/v5.0/v5.0/4.1#rpm安装)
36-
- [源代码安装](https://docs.ivorysql.org/cn/ivorysql-doc/v5.0/v5.0/4.1#源码安装)
32+
此外,关于更详细的安装说明,请参阅[安装文档](https://docs.ivorysql.org/cn/ivorysql-doc/v5.1/v5.1/4.1#introduction)。我们提供以下四种 IvorySQL 的安装方法:
33+
- [Yum 安装](https://docs.ivorysql.org/cn/ivorysql-doc/v5.1/v5.1/4.1#yum源安装)
34+
- [Docker 安装](https://docs.ivorysql.org/cn/ivorysql-doc/v5.1/v5.1/4.1#docker安装)
35+
- [RPM 安装](https://docs.ivorysql.org/cn/ivorysql-doc/v5.1/v5.1/4.1#rpm安装)
36+
- [源代码安装](https://docs.ivorysql.org/cn/ivorysql-doc/v5.1/v5.1/4.1#源码安装)
3737

3838

3939

configure

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# This configure script is free software; the Free Software Foundation
1212
# gives unlimited permission to copy, distribute and modify it.
1313
#
14-
# Portions Copyright (c) 2023-2025, IvorySQL Global Development Team
14+
# Portions Copyright (c) 2023-2026, IvorySQL Global Development Team
1515
# Copyright (c) 1996-2025, PostgreSQL Global Development Group
1616
## -------------------- ##
1717
## M4sh Initialization. ##

contrib/gb18030_2022/Maps/UCS_to_GB18030.pl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/
1111
#
1212
#
13-
# Portions Copyright (c) 2023-2025, IvorySQL Global Development Team
13+
# Portions Copyright (c) 2023-2026, IvorySQL Global Development Team
1414
#
1515
# Identification:
1616
# contrib/gb18030_2022/Maps/UCS_to_GB18030.pl
@@ -53,4 +53,4 @@
5353
}
5454
close($in);
5555

56-
print_conversion_tables($this_script, "GB18030_2022", \@mapping);
56+
print_conversion_tables($this_script, "GB18030_2022", \@mapping);

contrib/gb18030_2022/Maps/convutils.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ------------------------------------------------
22
#
3-
# Portions Copyright (c) 2023-2025, IvorySQL Global Development Team
3+
# Portions Copyright (c) 2023-2026, IvorySQL Global Development Team
44
#
55
# Identification:
66
# contrib/gb18030_2022/Maps/convutils.pm

contrib/gb18030_2022/Maps/gb-18030-2022.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63544,4 +63544,4 @@
6354463544
<range uFirst="FFE6" uLast="FFFF" bFirst="84 31 A2 34" bLast="84 31 A4 39" bMin="81 30 81 30" bMax="FE 39 FE 39"/>
6354563545
<range uFirst="10000" uLast="10FFFF" bFirst="90 30 81 30" bLast="E3 32 9A 35" bMin="81 30 81 30" bMax="FE 39 FE 39"/>
6354663546
</assignments>
63547-
</characterMapping>
63547+
</characterMapping>

0 commit comments

Comments
 (0)