
Security News
GitHub Actions Pricing Whiplash: Self-Hosted Actions Billing Change Postponed
GitHub postponed a new billing model for self-hosted Actions after developer pushback, but moved forward with hosted runner price cuts on January 1.
goracle is a package which is a database/sql/driver.Driver for connecting to Oracle DB, using Anthony Tuininga's excellent OCI wrapper, ODPI-C.
At least Go 1.9 is required!
In sql.Open("goracle", connString), you can provide the classic "user/passw@sid"
as connString, or an URL like "oracle://user:passw@sid".
You can provide all possible options with ConnectionParams.
With Go 1.9, driver-specific things are not needed, everything (I need) can be
achieved with the standard database/sql library. Even calling stored procedures
with OUT parameters, or sending/retrieving PL/SQL array types - just give a
goracle.PlSQLArrays Option within the parameters of Exec!
The array size of the returned PL/SQL arrays can be set with goracle.ArraySize(2000)
Connections are pooled by default (except AS SYSOPER or AS SYSDBA).
Correctness and simplicity is more important than speed, but the underlying ODPI-C library helps a lot with the lower levels, so the performance is not bad.
Queries are prefetched (256 rows by default, can be changed by adding a
goracle.FetchRowCount(1000) argument to the call of Query),
but you can speed up INSERT/UPDATE/DELETE statements
by providing all the subsequent parameters at once, by putting each param's subsequent
elements in a separate slice:
Instead of
db.Exec("INSERT INTO table (a, b) VALUES (:1, :2)", 1, "a")
db.Exec("INSERT INTO table (a, b) VALUES (:1, :2)", 2, "b")
do
db.Exec("INSERT INTO table (a, b) VALUES (:1, :2)", []int{1, 2}, []string{"a", "b"})
.
Goracle uses github.com/go-kit/kit/log's concept of a Log function.
Either set goracle.Log to a logging function globally,
or (better) set the logger in the Context of ExecContext or QueryContext:
db.QueryContext(goracle.ContextWithLog(ctx, logger.Log), qry)
To set ClientIdentifier, ClientInfo, Module, Action and DbOp on the session, to be seen in the Database by the Admin, set goracle.TraceTag on the Context:
db.QueryContext(goracle.ContextWithTraceTag(goracle.TraceTag{
Module: "processing",
Action: "first",
}), qry)
To use the goracle-specific functions, you'll need a *goracle.conn.
That's what goracle.DriverConn is for!
See z_qrcn_test.go for using that to reach
NewSubscription.
Just
go get gopkg.in/goracle.v2
and you're ready to go!
Windows may need some newer gcc (mingw-w64 with gcc 7.2.0).
Just as with other Go projects, you don't want to change the import paths, but you can hack on the library in place, just set up different remotes:
cd $GOPATH.src/gopkg.in/goracle.v2
git remote add upstream https://github.com/go-goracle/goracle.git
git fetch upstream
git checkout -b master upstream/master
git checkout -f master
git pull upstream master
git remote add fork git@github.com:mygithubacc/goracle
git checkout -b newfeature upstream/master
Change, experiment as you wish, then
git commit -m 'my great changes' *.go
git push fork newfeature
and you're ready to send a GitHub Pull Request from github.com/mygithubacc/goracle, newfeature branch.
As the ODPI-C sources are included as git submodule, don't forget to
git submodule update --init
# or
go generate
to update ODPI-C, too. If you want to refresh ODPI-C, you can:
cd odpi
git pull
cd ..
git add odpi
git commit -m 'upgrade odpi to <git commit hash of odpi>' odpi
Add this to .git/hooks/pre-commit
#!/bin/sh
set -e
output="$(gofmt -l "$@")"
if [ -n "$output" ]; then
echo >&2 "Go files must be formatted with gofmt. Please run:"
for f in $output; do
echo >&2 " gofmt -w $PWD/$f"
done
exit 1
fi
for file in "$@"; do
go vet "$file"
done
gometalinter --vendor --disable-all \
--enable=deadcode \
--enable=ineffassign \
--enable=gosimple \
--enable=staticcheck \
--enable=unused \
--enable=vetshadow \
./...
FAQs
Unknown package
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
GitHub postponed a new billing model for self-hosted Actions after developer pushback, but moved forward with hosted runner price cuts on January 1.

Research
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.

Security News
Socket CTO Ahmad Nassri shares practical AI coding techniques, tools, and team workflows, plus what still feels noisy and why shipping remains human-led.