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)で構成されています。その製品アーキテクチャは以下の図のとおりです: