Skip to content

Commit 464c728

Browse files
authored
Merge pull request #239 from yahonda/bump_oracle_free_23
Bump Oracle to Free 23 and Instant Client to 23.26.1.0.0
2 parents 7bee9ba + f4fe2b3 commit 464c728

43 files changed

Lines changed: 468 additions & 343 deletions

Some content is hidden

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

.github/workflows/rubocop.yml

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,27 @@ jobs:
1010
build:
1111

1212
runs-on: ubuntu-latest
13+
env:
14+
ORACLE_HOME: /opt/oracle/instantclient_23_26
15+
LD_LIBRARY_PATH: /opt/oracle/instantclient_23_26
1316

1417
steps:
15-
- uses: actions/checkout@v4
16-
- name: Set up Ruby 3.1
18+
- uses: actions/checkout@v6
19+
- name: Set up Ruby 4.0
1720
uses: ruby/setup-ruby@v1
1821
with:
19-
ruby-version: "3.1"
20-
- name: Install required package
22+
ruby-version: "4.0"
23+
- name: Create symbolic link for libaio library compatibility
2124
run: |
22-
sudo apt-get install alien
25+
sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1
2326
- name: Download Oracle instant client
2427
run: |
25-
wget -q https://download.oracle.com/otn_software/linux/instantclient/216000/oracle-instantclient-basic-21.6.0.0.0-1.x86_64.rpm
26-
wget -q https://download.oracle.com/otn_software/linux/instantclient/216000/oracle-instantclient-sqlplus-21.6.0.0.0-1.x86_64.rpm
27-
wget -q https://download.oracle.com/otn_software/linux/instantclient/216000/oracle-instantclient-devel-21.6.0.0.0-1.x86_64.rpm
28+
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-basic-linux.x64-23.26.1.0.0.zip
29+
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-sdk-linux.x64-23.26.1.0.0.zip
2830
- name: Install Oracle instant client
2931
run: |
30-
sudo alien -i oracle-instantclient-basic-21.6.0.0.0-1.x86_64.rpm
31-
sudo alien -i oracle-instantclient-sqlplus-21.6.0.0.0-1.x86_64.rpm
32-
sudo alien -i oracle-instantclient-devel-21.6.0.0.0-1.x86_64.rpm
32+
sudo unzip -q instantclient-basic-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
33+
sudo unzip -qo instantclient-sdk-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
3334
3435
- name: Build and run RuboCop
3536
run: |

.github/workflows/test.yml

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,32 @@ on:
77
jobs:
88
build:
99

10-
runs-on: ubuntu-20.04
10+
runs-on: ubuntu-latest
1111
continue-on-error: true
1212
strategy:
1313
matrix:
1414
ruby: [
15+
'4.0',
16+
'3.4',
17+
'3.3',
1518
'3.2',
16-
'3.1',
17-
'3.0',
18-
'2.7',
19-
'2.6',
20-
'2.5',
2119
ruby-head,
2220
ruby-debug,
2321
truffleruby,
2422
truffleruby-head
2523
]
2624
env:
27-
ORACLE_HOME: /usr/lib/oracle/21/client64
28-
LD_LIBRARY_PATH: /usr/lib/oracle/21/client64/lib
25+
ORACLE_HOME: /opt/oracle/instantclient_23_26
26+
LD_LIBRARY_PATH: /opt/oracle/instantclient_23_26
2927
NLS_LANG: AMERICAN_AMERICA.AL32UTF8
3028
TNS_ADMIN: ./ci/network/admin
31-
DATABASE_NAME: XEPDB1
29+
DATABASE_NAME: FREEPDB1
3230
TZ: Europe/Riga
3331
DATABASE_SYS_PASSWORD: Oracle18
34-
DATABASE_VERSION: 21.3.0.0
3532

3633
services:
3734
oracle:
38-
image: gvenzl/oracle-xe:latest
35+
image: gvenzl/oracle-free:latest
3936
ports:
4037
- 1521:1521
4138
env:
@@ -48,27 +45,28 @@ jobs:
4845
--health-retries 10
4946
5047
steps:
51-
- uses: actions/checkout@v4
48+
- uses: actions/checkout@v6
5249
- name: Set up Ruby
5350
uses: ruby/setup-ruby@v1
5451
with:
5552
ruby-version: ${{ matrix.ruby }}
56-
- name: Install required package
53+
- name: Create symbolic link for libaio library compatibility
5754
run: |
58-
sudo apt-get install alien
59-
- name: Download Oracle client
55+
sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1
56+
- name: Download Oracle instant client
6057
run: |
61-
wget -q https://download.oracle.com/otn_software/linux/instantclient/2110000/oracle-instantclient-basic-21.10.0.0.0-1.x86_64.rpm
62-
wget -q https://download.oracle.com/otn_software/linux/instantclient/2110000/oracle-instantclient-sqlplus-21.10.0.0.0-1.x86_64.rpm
63-
wget -q https://download.oracle.com/otn_software/linux/instantclient/2110000/oracle-instantclient-devel-21.10.0.0.0-1.x86_64.rpm
64-
- name: Install Oracle client
58+
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-basic-linux.x64-23.26.1.0.0.zip
59+
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-sdk-linux.x64-23.26.1.0.0.zip
60+
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-sqlplus-linux.x64-23.26.1.0.0.zip
61+
- name: Install Oracle instant client
6562
run: |
66-
sudo alien -i oracle-instantclient-basic-21.10.0.0.0-1.x86_64.rpm
67-
sudo alien -i oracle-instantclient-sqlplus-21.10.0.0.0-1.x86_64.rpm
68-
sudo alien -i oracle-instantclient-devel-21.10.0.0.0-1.x86_64.rpm
63+
sudo unzip -q instantclient-basic-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
64+
sudo unzip -qo instantclient-sdk-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
65+
sudo unzip -qo instantclient-sqlplus-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
66+
echo "/opt/oracle/instantclient_23_26" >> $GITHUB_PATH
6967
- name: Install JDBC Driver
7068
run: |
71-
wget -q https://download.oracle.com/otn-pub/otn_software/jdbc/211/ojdbc11.jar -O ./lib/ojdbc11.jar
69+
wget -q https://download.oracle.com/otn-pub/otn_software/jdbc/233/ojdbc11.jar -O ./lib/ojdbc11.jar
7270
- name: Create database user
7371
run: |
7472
./ci/setup_accounts.sh
@@ -81,4 +79,4 @@ jobs:
8179
bundle install --jobs 4 --retry 3
8280
- name: Run RSpec
8381
run: |
84-
bundle exec rspec
82+
RUBYOPT=-w bundle exec rspec

.github/workflows/test_11g.yml

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
name: test_11g
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
build:
9+
10+
runs-on: ubuntu-latest
11+
continue-on-error: true
12+
strategy:
13+
matrix:
14+
ruby: [
15+
'4.0',
16+
'3.4',
17+
'3.3',
18+
'3.2',
19+
ruby-head,
20+
ruby-debug,
21+
truffleruby,
22+
truffleruby-head
23+
]
24+
env:
25+
ORACLE_HOME: /opt/oracle/instantclient_21_15
26+
LD_LIBRARY_PATH: /opt/oracle/instantclient_21_15
27+
NLS_LANG: AMERICAN_AMERICA.AL32UTF8
28+
TNS_ADMIN: ./ci/network/admin
29+
DATABASE_NAME: XE
30+
TZ: Europe/Riga
31+
DATABASE_SYS_PASSWORD: Oracle18
32+
33+
services:
34+
oracle:
35+
image: gvenzl/oracle-xe:11
36+
ports:
37+
- 1521:1521
38+
env:
39+
TZ: Europe/Riga
40+
ORACLE_PASSWORD: Oracle18
41+
options: >-
42+
--health-cmd healthcheck.sh
43+
--health-interval 10s
44+
--health-timeout 5s
45+
--health-retries 10
46+
47+
steps:
48+
- uses: actions/checkout@v6
49+
- name: Set up Ruby
50+
uses: ruby/setup-ruby@v1
51+
with:
52+
ruby-version: ${{ matrix.ruby }}
53+
- name: Create symbolic link for libaio library compatibility
54+
run: |
55+
sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1
56+
- name: Download Oracle instant client
57+
run: |
58+
wget -q https://download.oracle.com/otn_software/linux/instantclient/2115000/instantclient-basic-linux.x64-21.15.0.0.0dbru.zip
59+
wget -q https://download.oracle.com/otn_software/linux/instantclient/2115000/instantclient-sqlplus-linux.x64-21.15.0.0.0dbru.zip
60+
wget -q https://download.oracle.com/otn_software/linux/instantclient/2115000/instantclient-sdk-linux.x64-21.15.0.0.0dbru.zip
61+
- name: Install Oracle instant client
62+
run: |
63+
sudo mkdir -p /opt/oracle/
64+
sudo unzip -q instantclient-basic-linux.x64-21.15.0.0.0dbru.zip -d /opt/oracle
65+
sudo unzip -qo instantclient-sqlplus-linux.x64-21.15.0.0.0dbru.zip -d /opt/oracle
66+
sudo unzip -qo instantclient-sdk-linux.x64-21.15.0.0.0dbru.zip -d /opt/oracle
67+
echo "/opt/oracle/instantclient_21_15" >> $GITHUB_PATH
68+
- name: Install JDBC Driver
69+
run: |
70+
wget -q https://download.oracle.com/otn-pub/otn_software/jdbc/233/ojdbc11.jar -O ./lib/ojdbc11.jar
71+
- name: Configure ORA_TZFILE to match Oracle 11g server
72+
run: |
73+
# Oracle 11g XE uses timezone file v14; Instant Client 21.15 embeds v35.
74+
# This mismatch causes ORA-01805 when ruby-oci8 fetches DATE/TIMESTAMP
75+
# values. Copy the v14 files from the 11g container and point the
76+
# Instant Client at them via ORA_TZFILE.
77+
ORACLE_CONTAINER=$(docker ps --filter "ancestor=gvenzl/oracle-xe:11" -q)
78+
sudo mkdir -p /opt/oracle/instantclient_21_15/oracore/zoneinfo
79+
docker cp "$ORACLE_CONTAINER":/u01/app/oracle/product/11.2.0/xe/oracore/zoneinfo/timezlrg_14.dat /tmp/timezlrg_14.dat
80+
docker cp "$ORACLE_CONTAINER":/u01/app/oracle/product/11.2.0/xe/oracore/zoneinfo/timezone_14.dat /tmp/timezone_14.dat
81+
sudo mv /tmp/timezlrg_14.dat /opt/oracle/instantclient_21_15/oracore/zoneinfo/
82+
sudo mv /tmp/timezone_14.dat /opt/oracle/instantclient_21_15/oracore/zoneinfo/
83+
echo "ORA_TZFILE=timezlrg_14.dat" >> $GITHUB_ENV
84+
- name: Create database user
85+
run: |
86+
./ci/setup_accounts.sh
87+
- name: Disable ActiveRecord for TruffleRuby
88+
run: |
89+
echo "NO_ACTIVERECORD=true" >> $GITHUB_ENV
90+
if: "contains(matrix.ruby, 'truffleruby')"
91+
- name: Bundle install
92+
run: |
93+
bundle install --jobs 4 --retry 3
94+
- name: Run RSpec
95+
run: |
96+
RUBYOPT=-w bundle exec rspec
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
name: test_gemfiles
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
concurrency:
8+
group: ${{ github.workflow }}-${{ github.ref }}
9+
cancel-in-progress: true
10+
11+
jobs:
12+
build:
13+
14+
runs-on: ubuntu-latest
15+
strategy:
16+
fail-fast: false
17+
matrix:
18+
include:
19+
- gemfile: gemfiles/Gemfile.activerecord-5.0
20+
ruby: '2.4'
21+
- gemfile: gemfiles/Gemfile.activerecord-5.1
22+
ruby: '2.4'
23+
- gemfile: gemfiles/Gemfile.activerecord-5.2
24+
ruby: '2.4'
25+
- gemfile: gemfiles/Gemfile.activerecord-6.0
26+
ruby: '2.5'
27+
- gemfile: gemfiles/Gemfile.activerecord-6.1
28+
ruby: '2.5'
29+
- gemfile: gemfiles/Gemfile.activerecord-7.0
30+
ruby: '2.7'
31+
- gemfile: gemfiles/Gemfile.activerecord-7.1
32+
ruby: '2.7'
33+
- gemfile: gemfiles/Gemfile.activerecord-7.2
34+
ruby: '3.1'
35+
- gemfile: gemfiles/Gemfile.activerecord-8.0
36+
ruby: '3.2'
37+
env:
38+
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
39+
ORACLE_HOME: /opt/oracle/instantclient_23_26
40+
LD_LIBRARY_PATH: /opt/oracle/instantclient_23_26
41+
NLS_LANG: AMERICAN_AMERICA.AL32UTF8
42+
TNS_ADMIN: ./ci/network/admin
43+
DATABASE_NAME: FREEPDB1
44+
TZ: Europe/Riga
45+
DATABASE_SYS_PASSWORD: Oracle18
46+
47+
services:
48+
oracle:
49+
image: gvenzl/oracle-free:latest
50+
ports:
51+
- 1521:1521
52+
env:
53+
TZ: Europe/Riga
54+
ORACLE_PASSWORD: Oracle18
55+
options: >-
56+
--health-cmd healthcheck.sh
57+
--health-interval 10s
58+
--health-timeout 5s
59+
--health-retries 10
60+
61+
steps:
62+
- uses: actions/checkout@v6
63+
- name: Set up Ruby
64+
uses: ruby/setup-ruby@v1
65+
with:
66+
ruby-version: ${{ matrix.ruby }}
67+
- name: Create symbolic link for libaio library compatibility
68+
run: |
69+
sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1
70+
- name: Download Oracle instant client
71+
run: |
72+
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-basic-linux.x64-23.26.1.0.0.zip
73+
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-sdk-linux.x64-23.26.1.0.0.zip
74+
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-sqlplus-linux.x64-23.26.1.0.0.zip
75+
- name: Install Oracle instant client
76+
run: |
77+
sudo unzip -q instantclient-basic-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
78+
sudo unzip -qo instantclient-sdk-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
79+
sudo unzip -qo instantclient-sqlplus-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
80+
echo "/opt/oracle/instantclient_23_26" >> $GITHUB_PATH
81+
- name: Install JDBC Driver
82+
run: |
83+
wget -q https://download.oracle.com/otn-pub/otn_software/jdbc/233/ojdbc11.jar -O ./lib/ojdbc11.jar
84+
- name: Create database user
85+
run: |
86+
./ci/setup_accounts.sh
87+
- name: Bundle install
88+
run: |
89+
bundle install --jobs 4 --retry 3
90+
- name: Run RSpec
91+
run: |
92+
RUBYOPT=-w bundle exec rspec

.rubocop.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
# rubocop 0.51.0 requires Ruby 2.1
2-
# We should not use cops only available for Ruby 2.1 or later
3-
# since ruby-plsql itself supports Ruby 1.9.3
41
AllCops:
5-
TargetRubyVersion: 2.3
2+
# Match the minimum Ruby exercised by the per-Rails matrix in
3+
# .github/workflows/test_gemfiles.yml (AR 5.0-5.2 jobs run on Ruby 2.4)
4+
# so RuboCop does not permit syntax/stdlib usage that would break
5+
# those supported runtimes.
6+
TargetRubyVersion: 2.4
67
DisabledByDefault: true
78

89
# Prefer &&/|| over and/or.
@@ -112,7 +113,7 @@ Style/StringLiterals:
112113
EnforcedStyle: double_quotes
113114

114115
# Detect hard tabs, no hard tabs.
115-
Layout/Tab:
116+
Layout/IndentationStyle:
116117
Enabled: true
117118

118119
# Blank lines should not have any spaces.
@@ -132,7 +133,6 @@ Style/RedundantPercentQ:
132133
Layout/EndAlignment:
133134
Enabled: true
134135
EnforcedStyleAlignWith: variable
135-
AutoCorrect: true
136136

137137
# Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
138138
Lint/RequireParentheses:

0 commit comments

Comments
 (0)