My Projects

Overview
This page contains information about my personal proof-of-concept implementations for features I’ve researched. These projects are purely for personal and academic research; they are not designed to be commercialized.

While I may release binaries of these projects, do not ask me for unreleased binaries or source code.

Hacking My Site
Please don’t waste time trying to hack this site looking for unreleased binaries or code – you won’t find any. I’m not dumb enough to store source code on an insecure server :) People have tried in the past and done nothing but cause me grief with my hosting provider. Please. Just don’t.


Redwood: A UPL Compiler Frontend Compatible with PL/SQL
A frontend for my LLVM-based optimizing Universal Procedural Language Compiler that enables the compilation of a subset of Oracle PL/SQL (7-12c).

GEMINI/NEXTGRES Gateway: Database Network Protocol Proxy
GEMINI, and its predecessor NEXTGRES Gateway, was a network proxy capable of emulating the Oracle Database network protocol. It was a longtime research project presented at IOUG Collaborate, Oracle OpenWorld, NYOUG, SEOUG, and OakTable World conferences. As a proxy, it enabled applications written to connect to Oracle Database to connect to a non-Oracle database transparently. Performance-wise, this worked OK for OLTP applications but, as it was written to use ODBC, there was significant overhead due to poorly-written ODBC drivers and the multiple type conversions required.

libodbcoci: Drop-in Replacement Library for the Oracle Call Interface
libodbcoci, the Oracle Call Interface Compatible Client Library Driver for ODBC, is a drop-in replacement library. It was written to allow applications written with a subset of OCI calls to execute against a non-Oracle database.

libimpexp: Import/Export File Manipulation Library
libimpexp is a C-based library that permits reading/writing old Oracle Database import and export files (7-10g). This was originally written to dump a SQL Server database directly into an export file compatible with Oracle Database. A while later, I expanded it to be able to import an export file into an ODBC-compatible database.

libmsb: Message Binary File Manipulation Library
libmsb is a C-based library that permits reading/writing of Oracle message binary (MSB) file. This was originally written for fun.

CLOUT: The Clever Little Oracle (Database) Unloading Tool
CLOUT is my own, C-based, proof-of-concept Data UnLoad (DUL) utility. It was designed for Oracle Database 7-12c. This was written to test my understanding of Oracle Database file formats.

CFDW: CLOUT-based Foreign Data Wrapper for Postgres
Based on CLOUT, this is a Postgres (9-12) foreign data wrapper extension that can read Oracle data files directly. This was written to allow for joining data between a Postgres table and Oracle Database data files at rest. It also aided in copying data from an OLTP Oracle Database into Postgres for offline OLAP-style querying.

CVT: CLOUT-based Virtual Table for SQLite
Based on CLOUT, this is a SQLite virtual table implementation that can read Oracle data files directly. This was written after CFDW and was designed to allow for a quick-and-dirty query functionality of Oracle Database data files at rest.

Mercury Distributed Cache for Oracle
Mercury is a distributed cache management system that supplements the Oracle buffer cache with optimized network-based data block storage to reduce the amount of read-related disk I/O which must be performed when working with large-scale databases.  It is written in C and is actively being developed.  More information can be found on the Mercury Distributed Cache for Oracle page. This is a research tool and it is not commercially available.

Nakano: REDO Log-based Replication
Nakano is a log-based transactional replication system for Oracle. It is written in C and consists of three parts, capture, transformation, and application. This is a research tool and it is not commercially available.