ECOBは、Oracle ProCと互換性のあるOceanBaseのプリコンパイラであり、ProcCと互換性のある機能を提供します。
ProCは、Oracleデータベースエコシステムが提供するアプリケーション開発ツールです。C言語でアプリケーションを作成する際に、プログラムソースコード内に直接SQL文を埋め込むことができます。これらの組み込みSQL文は、ホストCプログラム内のC言語変数を入出力として使用できます。次に、ProCのプリコンパイラであるprocは、ソースコードに対して完全な構文解析を行うためのプリプロセスを実行し、組み込みSQL文と命令をランタイムライブラリsqllibへの関数呼び出しに変換します。最後に、C言語プログラムソースコードファイルを出力します。このファイルは、C言語コンパイラでコンパイル・リンク処理を行うことで実行可能なプログラムを生成できます。そのため、OceanBaseデータベースはPro*Cへのサポートを提供するために、プリコンパイラecobとランタイムライブラリecoblibを含む同様のプリコンパイラECOBを開発しました。
1つのprocプロジェクトは多数の.pcソースファイルで構成され、Makefileなどの方法でビルドされます。移行コストを最小限に抑えるために、当社のプリコンパイラecobは、procプログラムと同じコマンドラインオプションと機能も提供しています。
機能
以下は、ECOBの現行バージョンの主な機能です:
OceanBaseのOracleモードと完全に互換性のあるSQL構文サポート。
COMMIT、CONNECT、DELETE、EXECUTE、EXECUTE IMMEDIATE、INSERT、SELECT、UPDATE、WHENEVER、CALL、PREPARE、ROLLBACKなどの基本的な組み込みSQL文をサポートします。カーソル(Cursor)関連の
DECLARE、OPEN、CLOSE、FETCH(NEXT、ABSOLUTE、WITH HOLD、CURRENT OFを含む)などの文をサポートします。ANSI標準の動的SQLに必要な
DESCRIPTORおよびそれに関連するALLOCATE、DEALLOCATE、GET、SET、DESCRIBE、FETCHなどの文をサポートします。ホスト変数は
BEGIN DECLARE SECTIONとEND DECLARE SECTION内で宣言する必要なく、直接使用できます。Cプリプロセッサマクロの#ifdef、#ifndef、#else、#endif、#defineの識別と処理をサポートします。
ecoblibライブラリは上記すべての文のランタイム動作をサポートしており、procプログラムとの互換動作(CHAR_MAPなど)を提供するだけでなく、Tuxedo環境でのプログラム実行もサポートしています。
ecobプログラムは、すべてのprocプログラムオプションと互換セマンティクス(PARSE=FULLなど)を認識し、procプログラムとのシームレスな置き換えが可能です。
製品アーキテクチャ
ECOBは、プリコンパイラプログラムecobとランタイム動的リンクライブラリecoblib(libecob.so)で構成されています。その製品アーキテクチャは以下の図のとおりです: