JPH11134368A - 言語管理プログラムインタフェース - Google Patents
言語管理プログラムインタフェースInfo
- Publication number
- JPH11134368A JPH11134368A JP10241180A JP24118098A JPH11134368A JP H11134368 A JPH11134368 A JP H11134368A JP 10241180 A JP10241180 A JP 10241180A JP 24118098 A JP24118098 A JP 24118098A JP H11134368 A JPH11134368 A JP H11134368A
- Authority
- JP
- Japan
- Prior art keywords
- language
- udr
- manager
- routine
- configuration
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2438—Embedded query languages
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/912—Applications of a database
- Y10S707/922—Communications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/953—Organization of data
- Y10S707/961—Associative
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Machine Translation (AREA)
Abstract
(57)【要約】
【課題】 一つ以上の言語で表現することができる一つ
以上のユーザ定義ルーチンを支援する方法を提供する。 【解決手段】 一つ以上の言語で表現することができ
る、ユーザ定義ルーチン(UDRs)は、UDRに対し
てネイティブな言語を決定することによって、例えば、
システムカタログをルックアップすることによって、操
作される。ネイティブ言語に関連する言語管理プログラ
ムが、まだロードされていないならば、言語管理プログ
ラムは、サーバメモリにロードされる。UDRがまだイ
ンスタンス生成されていないならば、UDRは、インス
タンス生成されかつ初期化される。次いで、UDRに対
する実行コンテキストが生成されかつUDRが実行され
る。言語管理プログラムのローディングは、言語管理プ
ログラムを初期化し、言語管理プログラムをローディン
グし、言語管理プログラムコンテキストを生成し、かつ
言語管理プログラムを実行することができる汎用言語イ
ンタフェースによって操作される。
以上のユーザ定義ルーチンを支援する方法を提供する。 【解決手段】 一つ以上の言語で表現することができ
る、ユーザ定義ルーチン(UDRs)は、UDRに対し
てネイティブな言語を決定することによって、例えば、
システムカタログをルックアップすることによって、操
作される。ネイティブ言語に関連する言語管理プログラ
ムが、まだロードされていないならば、言語管理プログ
ラムは、サーバメモリにロードされる。UDRがまだイ
ンスタンス生成されていないならば、UDRは、インス
タンス生成されかつ初期化される。次いで、UDRに対
する実行コンテキストが生成されかつUDRが実行され
る。言語管理プログラムのローディングは、言語管理プ
ログラムを初期化し、言語管理プログラムをローディン
グし、言語管理プログラムコンテキストを生成し、かつ
言語管理プログラムを実行することができる汎用言語イ
ンタフェースによって操作される。
Description
【0001】
【発明の属する技術分野】本発明は、データベース管理
システム(DBMS)のための言語管理プログラム(lan
guage manager)に関する。
システム(DBMS)のための言語管理プログラム(lan
guage manager)に関する。
【0002】
【従来の技術】強力で、しかも経済的なコンピュータの
出現は、これらのマシンを多くの組織の不可欠な部分に
した。これらのコンピュータに対する重要な種類のアプ
リケーションは、データベースにおいてデータを操作す
るソフトウェアメソッドの収集である−−“データベー
スエンジン" によって情報を記憶し、探索しかつ検索す
ることができるように論理的に構成される情報の本体で
ある、データベースを含む。データベースは、記録(レ
コード)を構成している情報がコンピュータに実際に記
憶される方法の詳細な知識なしにコンピュータに記憶さ
れた記録を位置決めし、追加し、削除し及び更新するよ
うな動作をユーザに実行させる。一つの強力な型のDB
MSは、それぞれが“関係" と呼ばれる、一組の表とし
て記憶された情報がユーザに見えるリレーショナルDB
MSとして知られている。各関係では、情報は、行列に
配列され、データの列は、一つ以上の所定の関数によっ
て互いに関係している。また、各列は、属性を有し、か
つ各属性は、その列にデータ値を含むドメインを有す
る。リレーショナルデータベースの構成は、表間の関係
を選択的に再定義することによって変更することができ
る。
出現は、これらのマシンを多くの組織の不可欠な部分に
した。これらのコンピュータに対する重要な種類のアプ
リケーションは、データベースにおいてデータを操作す
るソフトウェアメソッドの収集である−−“データベー
スエンジン" によって情報を記憶し、探索しかつ検索す
ることができるように論理的に構成される情報の本体で
ある、データベースを含む。データベースは、記録(レ
コード)を構成している情報がコンピュータに実際に記
憶される方法の詳細な知識なしにコンピュータに記憶さ
れた記録を位置決めし、追加し、削除し及び更新するよ
うな動作をユーザに実行させる。一つの強力な型のDB
MSは、それぞれが“関係" と呼ばれる、一組の表とし
て記憶された情報がユーザに見えるリレーショナルDB
MSとして知られている。各関係では、情報は、行列に
配列され、データの列は、一つ以上の所定の関数によっ
て互いに関係している。また、各列は、属性を有し、か
つ各属性は、その列にデータ値を含むドメインを有す
る。リレーショナルデータベースの構成は、表間の関係
を選択的に再定義することによって変更することができ
る。
【0003】データベースエンジンは、SQL(Structu
red Query Language) によって又は他の機構によって表
されるメソッドのような種々のデータベース照会(問合
せ)プロトコルのいずれかを用いることによって迅速か
つ容易にリレーショナルデータベース上で複雑な探索を
実行しうる。表間の関係は、探索の結果をデータベース
の他の表の対応情報で自動的に相互参照することができ
るようにする。結合、プロジェクト及び選択動作を含
む、多種の動作は、データベースの表で実行させられ
る。これらの動作は、標準並びにユーザ定義型データ型
に作られうる。リレーショナルDBMSにおける情報の
特定の項目をアクセスするために、問合せコンパイラ
は、ユーザ要求に応じて解をもたらすために、SQLで
一般に表現されるユーザ要求を、一つ以上の入力関係で
実行されるべく一組の動作に変換する。更に、ユーザ要
求は、ある所定の条件下で、一つ以上のユーザ定義ルー
チン(UDRs)を実行させうる。これらのUDRs
は、内部プログラム又は外部プログラムとして実施され
うる。
red Query Language) によって又は他の機構によって表
されるメソッドのような種々のデータベース照会(問合
せ)プロトコルのいずれかを用いることによって迅速か
つ容易にリレーショナルデータベース上で複雑な探索を
実行しうる。表間の関係は、探索の結果をデータベース
の他の表の対応情報で自動的に相互参照することができ
るようにする。結合、プロジェクト及び選択動作を含
む、多種の動作は、データベースの表で実行させられ
る。これらの動作は、標準並びにユーザ定義型データ型
に作られうる。リレーショナルDBMSにおける情報の
特定の項目をアクセスするために、問合せコンパイラ
は、ユーザ要求に応じて解をもたらすために、SQLで
一般に表現されるユーザ要求を、一つ以上の入力関係で
実行されるべく一組の動作に変換する。更に、ユーザ要
求は、ある所定の条件下で、一つ以上のユーザ定義ルー
チン(UDRs)を実行させうる。これらのUDRs
は、内部プログラム又は外部プログラムとして実施され
うる。
【0004】内部プログラムは、DBMSによって管理
される実行環境内で実行するプログラムである。内部プ
ログラムは、DBMS環境内だけで支援される翻訳され
た言語で一般に書かれる。対照的に、外部プログラム
は、オペレーティングシステムによって管理される環境
で実行することができる。外部プログラムは、一般に、
プロプラエタリ又はAda,Basic,C,C++,
Cobol,Java,Pascalのような標準言
語、又は第4世代プログラミング言語、その他でありう
る、高級言語で表現される。
される実行環境内で実行するプログラムである。内部プ
ログラムは、DBMS環境内だけで支援される翻訳され
た言語で一般に書かれる。対照的に、外部プログラム
は、オペレーティングシステムによって管理される環境
で実行することができる。外部プログラムは、一般に、
プロプラエタリ又はAda,Basic,C,C++,
Cobol,Java,Pascalのような標準言
語、又は第4世代プログラミング言語、その他でありう
る、高級言語で表現される。
【0005】
【発明が解決しようとする課題】ほとんどのリレーショ
ナルデータベース管理システムは、内部プログラムとし
て実施さえる所定の手続きを支援するが、全てのシステ
ムが外部部プログラムを支援するわけではない。更に、
外部プログラムを支援するシステムでは、支援された言
語は、コンパイルされるのとは反対に、翻訳されて、最
適条件に及ばないプロセッシング性能に導く。他のシス
テムは、特定言語のそれらの支援をハード−コードす
る。これらのシステムは、既存の言語の変更又は新しい
言語の追加が冗長である点において柔軟性がない。
ナルデータベース管理システムは、内部プログラムとし
て実施さえる所定の手続きを支援するが、全てのシステ
ムが外部部プログラムを支援するわけではない。更に、
外部プログラムを支援するシステムでは、支援された言
語は、コンパイルされるのとは反対に、翻訳されて、最
適条件に及ばないプロセッシング性能に導く。他のシス
テムは、特定言語のそれらの支援をハード−コードす
る。これらのシステムは、既存の言語の変更又は新しい
言語の追加が冗長である点において柔軟性がない。
【0006】
【課題を解決するための手段】本発明の上記課題は、一
つ以上の言語で表現することができる一つ以上のユーザ
定義ルーチン(UDRs)を操作するための、データベ
ースサーバによって実行される、方法であって:UDR
に対してネイティブな言語を決定し;決定されたネイテ
ィブ言語に関連する言語管理プログラムが既にロードさ
れているかどうかをチェックしかつまだロードされてい
ないならば、言語管理プログラムをサーバメモリにロー
ドし;UDRが既にインスタンス生成されているかどう
かをチェックしかつまだインスタンス生成されていない
ならば、前記UDRをインスタンス生成しかつ初期化
し;そして前記UDRに対する実行コンテキストを生成
する段階を具備する方法によって達成される。
つ以上の言語で表現することができる一つ以上のユーザ
定義ルーチン(UDRs)を操作するための、データベ
ースサーバによって実行される、方法であって:UDR
に対してネイティブな言語を決定し;決定されたネイテ
ィブ言語に関連する言語管理プログラムが既にロードさ
れているかどうかをチェックしかつまだロードされてい
ないならば、言語管理プログラムをサーバメモリにロー
ドし;UDRが既にインスタンス生成されているかどう
かをチェックしかつまだインスタンス生成されていない
ならば、前記UDRをインスタンス生成しかつ初期化
し;そして前記UDRに対する実行コンテキストを生成
する段階を具備する方法によって達成される。
【0007】本発明の方法では、前記UDRを実行する
段階を更に具備してもよい。本発明の方法では、C言語
管理プログラムを供給する段階を更に具備してもよい。
本発明の方法では、Java言語管理プログラムを供給
する段階を更に具備してもよい。本発明の方法では、前
記Java言語管理プログラムは、共有メモリを用いて
Java仮想マシンと通信するようにしてもよい。本発
明の方法では、前記UDRに対してネイティブな言語を
決定する段階は、システムカタログをルックアップする
段階を更に具備してもよい。本発明の方法では、ルーチ
ン記述子(RDESC)構成、ルーチンインスタンス
(RINST)構成、言語記述子(LDESC)構成及
びモジュール記述子(MDESC)構成を生成しかつ初
期化する段階を更に具備してもよい。
段階を更に具備してもよい。本発明の方法では、C言語
管理プログラムを供給する段階を更に具備してもよい。
本発明の方法では、Java言語管理プログラムを供給
する段階を更に具備してもよい。本発明の方法では、前
記Java言語管理プログラムは、共有メモリを用いて
Java仮想マシンと通信するようにしてもよい。本発
明の方法では、前記UDRに対してネイティブな言語を
決定する段階は、システムカタログをルックアップする
段階を更に具備してもよい。本発明の方法では、ルーチ
ン記述子(RDESC)構成、ルーチンインスタンス
(RINST)構成、言語記述子(LDESC)構成及
びモジュール記述子(MDESC)構成を生成しかつ初
期化する段階を更に具備してもよい。
【0008】本発明の方法では、前記言語管理プログラ
ムをローディングする段階は、前記言語管理プログラム
を初期化し、前記言語管理プログラムをローディング
し、言語管理プログラムコンテキストを生成し、かつ前
記言語管理プログラムを実行することができる汎用言語
インタフェースを供給する段階を更に具備してもよい。
また、上述した本発明の課題は、一つ以上の言語で表現
することができる一つ以上のユーザ定義ルーチン(UD
Rs)を操作するための、データベースサーバによって
実行される、方法であって:UDRに対してネイティブ
な言語を決定し;決定されたネイティブ言語に関連する
言語管理プログラムを選択的にイネーブルし;前記選択
的にイネーブルされた言語管理プログラムを用いて前記
UDRを実行する段階を具備する方法によって達成され
る。
ムをローディングする段階は、前記言語管理プログラム
を初期化し、前記言語管理プログラムをローディング
し、言語管理プログラムコンテキストを生成し、かつ前
記言語管理プログラムを実行することができる汎用言語
インタフェースを供給する段階を更に具備してもよい。
また、上述した本発明の課題は、一つ以上の言語で表現
することができる一つ以上のユーザ定義ルーチン(UD
Rs)を操作するための、データベースサーバによって
実行される、方法であって:UDRに対してネイティブ
な言語を決定し;決定されたネイティブ言語に関連する
言語管理プログラムを選択的にイネーブルし;前記選択
的にイネーブルされた言語管理プログラムを用いて前記
UDRを実行する段階を具備する方法によって達成され
る。
【0009】更に、本発明の上記課題は、プロセッサ;
前記プロセッサに結合されたメモリアレイ;前記プロセ
ッサに結合されたディスプレイ;前記プロセッサに結合
され、一つ以上の言語で表現することができる一つ以上
のユーザ定義ルーチン(UDRs)を操作するためのデ
ータベース管理システム(DBMS)を記憶するための
データ記憶装置;及び以下の動作を実行するために前記
メモリアレイ又は前記データ記憶装置に存在するソフト
ウェア:UDRに対してネイティブな言語を決定し;前
記ネイティブ言語に関連する言語管理プログラムが既に
ロードされているかどうかをチェックしかつまだロード
されていないならば、前記言語管理プログラムをサーバ
メモリにロードし;前記UDRが既にインスタンス生成
されているかどうかをチェックしかつまだインスタンス
生成されていないならば、前記UDRをインスタンス生
成しかつ初期化し;かつ前記UDRに対する実行コンテ
キストを生成するを備えているコンピュータシステムに
よって達成される。
前記プロセッサに結合されたメモリアレイ;前記プロセ
ッサに結合されたディスプレイ;前記プロセッサに結合
され、一つ以上の言語で表現することができる一つ以上
のユーザ定義ルーチン(UDRs)を操作するためのデ
ータベース管理システム(DBMS)を記憶するための
データ記憶装置;及び以下の動作を実行するために前記
メモリアレイ又は前記データ記憶装置に存在するソフト
ウェア:UDRに対してネイティブな言語を決定し;前
記ネイティブ言語に関連する言語管理プログラムが既に
ロードされているかどうかをチェックしかつまだロード
されていないならば、前記言語管理プログラムをサーバ
メモリにロードし;前記UDRが既にインスタンス生成
されているかどうかをチェックしかつまだインスタンス
生成されていないならば、前記UDRをインスタンス生
成しかつ初期化し;かつ前記UDRに対する実行コンテ
キストを生成するを備えているコンピュータシステムに
よって達成される。
【0010】本発明のコンピュータシステムでは、前記
言語−特定仮想管理プログラムと言語マシンとの間で通
信するための共有メモリを更に備えてもよい。本発明の
コンピュータシステムでは、前記UDRは、前記言語−
特定仮想マシンによって翻訳されるように構成してもよ
い。本発明のコンピュータシステムでは、前記UDR
は、前記言語−特定仮想マシンによってコンパイルされ
かつ実行されるようにしてもよい。本発明のコンピュー
タシステムでは、前記言語−特定仮想マシンは、Jav
a仮想マシンを備えいてもよい。本発明のコンピュータ
システムでは、ルーチン記述子(RDESC)構成、ル
ーチンインスタンス(RINST)構成、言語記述子
(LDESC)構成及びモジュール記述子(MDES
C)構成を更に具備してもよい。
言語−特定仮想管理プログラムと言語マシンとの間で通
信するための共有メモリを更に備えてもよい。本発明の
コンピュータシステムでは、前記UDRは、前記言語−
特定仮想マシンによって翻訳されるように構成してもよ
い。本発明のコンピュータシステムでは、前記UDR
は、前記言語−特定仮想マシンによってコンパイルされ
かつ実行されるようにしてもよい。本発明のコンピュー
タシステムでは、前記言語−特定仮想マシンは、Jav
a仮想マシンを備えいてもよい。本発明のコンピュータ
システムでは、ルーチン記述子(RDESC)構成、ル
ーチンインスタンス(RINST)構成、言語記述子
(LDESC)構成及びモジュール記述子(MDES
C)構成を更に具備してもよい。
【0011】本発明のコンピュータシステムでは、前記
言語管理プログラムを初期化し、前記言語管理プログラ
ムをローディングし、言語管理プログラムコンテキスト
を生成し、かつ前記言語管理プログラムを実行すること
ができる汎用言語インタフェースを更に具備してもよ
い。本発明の上述した課題は、DBMS用コンピュータ
ソフトウェアであり、前記ソフトウェアは、コンピュー
タ読取り可能媒体に存在しかつコンピュータに以下の動
作を実行させるための命令を備えている:UDRに対し
てネイティブな言語を決定し;前記ネイティブ言語に関
連する言語管理プログラムが既にロードされているかど
うかをチェックしかつまだロードされていないならば、
前記言語管理プログラムをサーバメモリにロードし;前
記UDRが既にインスタンス生成されているかどうかを
チェックしかつまだインスタンス生成されていないなら
ば、前記UDRをインスタンス生成しかつ初期化し;か
つ前記UDRに対する実行コンテキストを生成するソフ
トウェアによって達成される。
言語管理プログラムを初期化し、前記言語管理プログラ
ムをローディングし、言語管理プログラムコンテキスト
を生成し、かつ前記言語管理プログラムを実行すること
ができる汎用言語インタフェースを更に具備してもよ
い。本発明の上述した課題は、DBMS用コンピュータ
ソフトウェアであり、前記ソフトウェアは、コンピュー
タ読取り可能媒体に存在しかつコンピュータに以下の動
作を実行させるための命令を備えている:UDRに対し
てネイティブな言語を決定し;前記ネイティブ言語に関
連する言語管理プログラムが既にロードされているかど
うかをチェックしかつまだロードされていないならば、
前記言語管理プログラムをサーバメモリにロードし;前
記UDRが既にインスタンス生成されているかどうかを
チェックしかつまだインスタンス生成されていないなら
ば、前記UDRをインスタンス生成しかつ初期化し;か
つ前記UDRに対する実行コンテキストを生成するソフ
トウェアによって達成される。
【0012】本発明のソフトウェアでは、前記UDRを
実行するための命令を更に備えてもよい。本発明のソフ
トウェアでは、前記UDRに対してネイティブな前記言
語を決定することにおいてシステムカタログを探索する
命令を更に具備してもよい。本発明のソフトウェアで
は、ルーチン記述子(RDESC)構成、ルーチンイン
スタンス(RINST)構成、言語記述子(LDES
C)構成及びモジュール記述子(MDESC)構成を生
成しかつ初期化する命令を更に備えてもよい。本発明の
ソフトウェアでは、前記言語管理プログラムをローディ
ングする命令は、前記言語管理プログラムを初期化し、
前記言語管理プログラムをローディングし、言語管理プ
ログラムコンテキストを生成し、かつ前記言語管理プロ
グラムを実行することができる汎用言語インタフェース
を供給する命令を更に備えてもよい。本発明のソフトウ
ェアでは、ルーチン管理プログラムを用いて種々の言語
でUDRsを実行するための命令を更に備えてもよい。
他の特徴及び利点は、以下の説明及び特許請求の範囲か
ら明らかであろう。
実行するための命令を更に備えてもよい。本発明のソフ
トウェアでは、前記UDRに対してネイティブな前記言
語を決定することにおいてシステムカタログを探索する
命令を更に具備してもよい。本発明のソフトウェアで
は、ルーチン記述子(RDESC)構成、ルーチンイン
スタンス(RINST)構成、言語記述子(LDES
C)構成及びモジュール記述子(MDESC)構成を生
成しかつ初期化する命令を更に備えてもよい。本発明の
ソフトウェアでは、前記言語管理プログラムをローディ
ングする命令は、前記言語管理プログラムを初期化し、
前記言語管理プログラムをローディングし、言語管理プ
ログラムコンテキストを生成し、かつ前記言語管理プロ
グラムを実行することができる汎用言語インタフェース
を供給する命令を更に備えてもよい。本発明のソフトウ
ェアでは、ルーチン管理プログラムを用いて種々の言語
でUDRsを実行するための命令を更に備えてもよい。
他の特徴及び利点は、以下の説明及び特許請求の範囲か
ら明らかであろう。
【0013】
【発明の実施の形態】ここで図1を参照すると、一つ以
上の言語管理プログラム190〜192を有しているデ
ータベースサーバ110が示されている。クライアント
178は、データベースサーバ110と直接通信しう
る。代替え的に、クライアント198は、共有メモリ
(SM)197を用いてサーバ110と通信しうる。ク
ライアント178からの要求(リクエスト)は、データ
ベース命令及びファンクションを解析するためにパーサ
(構文解析木)180に供給される。構文解析されたフ
ァンクションは、ユーザ定義ルーチン(UDR)決定子
(determiner)184に供給される。それに応じて、U
DR決定子184は、ファンクションが書かれている言
語を含む、構文解析されたファンクションのより詳細に
ついてシステムカタログ186のファンクションをルッ
クアップする。システムカタログ186からのファンク
ションについての情報を検索した後、UDR決定子18
4は、この情報をルーチン管理プログラム188に渡
す。ルーチン管理プログラムは、次いで、一つ以上の言
語管理プログラム(LMs)190〜192に接続され
る。各LM190〜192によって実行されるタスク
は、静的ルーチン情報を含んでいる固有の記述子を用い
てルーチン(ファンクションまたは手続き)を識別し、
サーバ110のメモリにおけるUDRモジュールのロー
ディング及びアンローディングを管理し、SQLステー
トメントのコンテキストにおけるルーチンのインスタン
スを実行するために必要な動的情報を含んでいるデータ
構造を生成し、かつUDRの実際の実行を管理すること
を含む。言語管理プログラム190〜192は、ルーチ
ン管理プログラム188が適当な言語管理プログラムを
呼出すことだけを必要とするように言語特定ファシリテ
ィを更に供給する。それゆえに、言語管理プログラム1
92は、Java関連ファンクションコールを管理し、
言語管理プログラム192は、Java特定例外システ
ムを有しうる。
上の言語管理プログラム190〜192を有しているデ
ータベースサーバ110が示されている。クライアント
178は、データベースサーバ110と直接通信しう
る。代替え的に、クライアント198は、共有メモリ
(SM)197を用いてサーバ110と通信しうる。ク
ライアント178からの要求(リクエスト)は、データ
ベース命令及びファンクションを解析するためにパーサ
(構文解析木)180に供給される。構文解析されたフ
ァンクションは、ユーザ定義ルーチン(UDR)決定子
(determiner)184に供給される。それに応じて、U
DR決定子184は、ファンクションが書かれている言
語を含む、構文解析されたファンクションのより詳細に
ついてシステムカタログ186のファンクションをルッ
クアップする。システムカタログ186からのファンク
ションについての情報を検索した後、UDR決定子18
4は、この情報をルーチン管理プログラム188に渡
す。ルーチン管理プログラムは、次いで、一つ以上の言
語管理プログラム(LMs)190〜192に接続され
る。各LM190〜192によって実行されるタスク
は、静的ルーチン情報を含んでいる固有の記述子を用い
てルーチン(ファンクションまたは手続き)を識別し、
サーバ110のメモリにおけるUDRモジュールのロー
ディング及びアンローディングを管理し、SQLステー
トメントのコンテキストにおけるルーチンのインスタン
スを実行するために必要な動的情報を含んでいるデータ
構造を生成し、かつUDRの実際の実行を管理すること
を含む。言語管理プログラム190〜192は、ルーチ
ン管理プログラム188が適当な言語管理プログラムを
呼出すことだけを必要とするように言語特定ファシリテ
ィを更に供給する。それゆえに、言語管理プログラム1
92は、Java関連ファンクションコールを管理し、
言語管理プログラム192は、Java特定例外システ
ムを有しうる。
【0014】ルーチン管理プログラムによって管理され
る言語は、C,Java,Cobol,SPL(Stored
Procedure Language )、その他を含みうる。言語管理
プログラム190〜192のそれぞれは、共有メモリを
用いて言語実行エンジンと通信する。例えば、言語管理
プログラム192は、Java関連コールを管理するの
で、言語管理プログラム192は、共有メモリ(SM)
194に接続され、次いで、例えば、Java仮想マシ
ン(VM)196のような言語特定仮想マシンによって
アクセス可能である。UDR決定子184から構文解析
されたファンクションを受け取って、ルーチン管理プロ
グラム188は、特定の構文解析されたファンクション
を支援している言語管理プログラムがサーバ110のメ
モリにロードされたかどうかを決定する。ロードされて
いないならば、ルーチン管理プログラム188は、要求
された言語管理プログラムをメモリにロードする。それ
により、ルーチン管理プログラム188は、必要に応じ
て言語管理プログラムを動的にロードする。呼出された
ファンクションに関する詳細は、適当なLM190又は
192に渡され、次いで要求されたファンクションがロ
ードされたかどうかを決定する。LM190又は192
は、それゆえに、UDRsをロードしかつ実行するため
にサーバ110によって必要なファシリティを提供す
る。
る言語は、C,Java,Cobol,SPL(Stored
Procedure Language )、その他を含みうる。言語管理
プログラム190〜192のそれぞれは、共有メモリを
用いて言語実行エンジンと通信する。例えば、言語管理
プログラム192は、Java関連コールを管理するの
で、言語管理プログラム192は、共有メモリ(SM)
194に接続され、次いで、例えば、Java仮想マシ
ン(VM)196のような言語特定仮想マシンによって
アクセス可能である。UDR決定子184から構文解析
されたファンクションを受け取って、ルーチン管理プロ
グラム188は、特定の構文解析されたファンクション
を支援している言語管理プログラムがサーバ110のメ
モリにロードされたかどうかを決定する。ロードされて
いないならば、ルーチン管理プログラム188は、要求
された言語管理プログラムをメモリにロードする。それ
により、ルーチン管理プログラム188は、必要に応じ
て言語管理プログラムを動的にロードする。呼出された
ファンクションに関する詳細は、適当なLM190又は
192に渡され、次いで要求されたファンクションがロ
ードされたかどうかを決定する。LM190又は192
は、それゆえに、UDRsをロードしかつ実行するため
にサーバ110によって必要なファシリティを提供す
る。
【0015】ここで図2を参照して、典型的な言語管理
プログラム190(図1)の詳細が示される。LM19
0は、初期化コンポーネント170、ロードコンポーネ
ント172、コンテキストコンポーネント王174及び
実行コンポーネント176を有する。初期化コンポーネ
ント170は、LM190がまず呼出されかつメモリに
ロードされる場合に変数を所定の設定にセットする。ロ
ードコンポーネント172は、UDR特定モジュールを
メモリにロードするためにサーバプロセスに対して利用
可能にされる。ロードコンポーネント172は、インタ
プリタをロードするような特定言語によって要求された
あらゆるコードをさまざまにインストールし、コード及
び/又は特定されたルーチンを含んでいるデータモジュ
ールをインストールする一組の言語特定コールに共通イ
ンタフェースを供給し、ロードされるモジュールに対す
るライセンスをチェックし、かつモジュールをアンロー
ドし及び/又はメモリから言語特定コードを取り除く。
UDRsについてのコンテキストを管理するためにサー
バプロセスに対して利用可能である、コンテキストコン
ポーネント174は、特定のルーチンに対する状態コン
テキストインスタンスを生成しかつ破壊する一組の言語
特定コールに共通インタフェースを供給する。LM実行
コンポーネント176は、UDRの実行を実現するため
にサーバプロセスに対して利用可能である。実行コンポ
ーネント176は、一般ルーチン管理に対する共通イン
タフェース及びUDRsからの値をセットアップし、コ
ールし、かつリターンする一組の言語特定コールを供給
する。
プログラム190(図1)の詳細が示される。LM19
0は、初期化コンポーネント170、ロードコンポーネ
ント172、コンテキストコンポーネント王174及び
実行コンポーネント176を有する。初期化コンポーネ
ント170は、LM190がまず呼出されかつメモリに
ロードされる場合に変数を所定の設定にセットする。ロ
ードコンポーネント172は、UDR特定モジュールを
メモリにロードするためにサーバプロセスに対して利用
可能にされる。ロードコンポーネント172は、インタ
プリタをロードするような特定言語によって要求された
あらゆるコードをさまざまにインストールし、コード及
び/又は特定されたルーチンを含んでいるデータモジュ
ールをインストールする一組の言語特定コールに共通イ
ンタフェースを供給し、ロードされるモジュールに対す
るライセンスをチェックし、かつモジュールをアンロー
ドし及び/又はメモリから言語特定コードを取り除く。
UDRsについてのコンテキストを管理するためにサー
バプロセスに対して利用可能である、コンテキストコン
ポーネント174は、特定のルーチンに対する状態コン
テキストインスタンスを生成しかつ破壊する一組の言語
特定コールに共通インタフェースを供給する。LM実行
コンポーネント176は、UDRの実行を実現するため
にサーバプロセスに対して利用可能である。実行コンポ
ーネント176は、一般ルーチン管理に対する共通イン
タフェース及びUDRsからの値をセットアップし、コ
ールし、かつリターンする一組の言語特定コールを供給
する。
【0016】また、LM190は、特定言語インタフェ
ースを実現するために必要な一組のコールに対する仕様
である一般言語インタフェースコンポーネント177も
有する。これらのコールは、それらのデューティを実行
するためにロード、コンテキストエクスポート、及び実
行コンポーネント172〜176によって用いられる。
一般言語インタフェースコンポーネント177は、それ
ゆえに、(1)UDRsを含んでいるモジュールをロー
ド及びアンロードし;(2)各ルーチンに対する言語コ
ンテキストを生成及び破壊し;かつ(3)アーギュメン
トを集め、ルーチンを実行し、かつ結果をリターンす
る、言語特定ファンクションに対する共通インタフェー
スを提供する。一般言語インタフェースコンポーネント
177の一つの実現において、各言語に対する一そろい
(一組)のファンクションは、C−コール可能モジュー
ルからロードされ、要求されるようにリロードすること
ができる。Cルーチンインタフェースは、一般的な(共
通な)Cルーチンに対する一般言語コンポーネントのイ
ンスタンスである。それは、サーバ110からCで書か
れたUDRsをコールするために必要な特定動作を実現
する。Cルーチンインタフェースは、共有オブジェクト
コードモジュールをロード及びアンロードし;ルーチン
に対するパラメータ構造を割り当てかつフリーにし;ア
ーギュメントをコールスタックに変換しかつプッシュ
し、ルーチンを実行し、かつルーチンの結果をリターン
するために必要なファンクションを提供する。
ースを実現するために必要な一組のコールに対する仕様
である一般言語インタフェースコンポーネント177も
有する。これらのコールは、それらのデューティを実行
するためにロード、コンテキストエクスポート、及び実
行コンポーネント172〜176によって用いられる。
一般言語インタフェースコンポーネント177は、それ
ゆえに、(1)UDRsを含んでいるモジュールをロー
ド及びアンロードし;(2)各ルーチンに対する言語コ
ンテキストを生成及び破壊し;かつ(3)アーギュメン
トを集め、ルーチンを実行し、かつ結果をリターンす
る、言語特定ファンクションに対する共通インタフェー
スを提供する。一般言語インタフェースコンポーネント
177の一つの実現において、各言語に対する一そろい
(一組)のファンクションは、C−コール可能モジュー
ルからロードされ、要求されるようにリロードすること
ができる。Cルーチンインタフェースは、一般的な(共
通な)Cルーチンに対する一般言語コンポーネントのイ
ンスタンスである。それは、サーバ110からCで書か
れたUDRsをコールするために必要な特定動作を実現
する。Cルーチンインタフェースは、共有オブジェクト
コードモジュールをロード及びアンロードし;ルーチン
に対するパラメータ構造を割り当てかつフリーにし;ア
ーギュメントをコールスタックに変換しかつプッシュ
し、ルーチンを実行し、かつルーチンの結果をリターン
するために必要なファンクションを提供する。
【0017】SPL(記憶手続き言語)を用いている一
般言語インタフェースコンポーネント177の別の実現
では、SPLインタフェースは、サーバからSPモジュ
ールをコールするために必要な特定動作を実現する。S
PLインタフェースは、実行中に手続きキャッシュにお
ける手続きをロックし、アーギュメントを変換しかつ渡
し、記憶Sされた手続きを実行し、かつ結果をリターン
するためのファンクションを提供する。ここでクライア
ントサイドの一般言語インタフェースを実現するルーチ
ンを考えると、クライアントサイドルーチンインタフェ
ースは、クライアントコードおに存在するルーチンをコ
ールするためにサーバによって必要な特定動作を実現す
る。クライアントルーチンインタフェースは、実行され
るべき特定ルーチン及びモジュールに対する必要性をク
ライアントに知らせるために必要なファンクションを供
給する。クライアントルーチンインタフェースは、ま
た、アーギュメントを変換しかつルーチンを実行してい
るクライアントに渡し、かつクライアントからの結果を
リターンする。
般言語インタフェースコンポーネント177の別の実現
では、SPLインタフェースは、サーバからSPモジュ
ールをコールするために必要な特定動作を実現する。S
PLインタフェースは、実行中に手続きキャッシュにお
ける手続きをロックし、アーギュメントを変換しかつ渡
し、記憶Sされた手続きを実行し、かつ結果をリターン
するためのファンクションを提供する。ここでクライア
ントサイドの一般言語インタフェースを実現するルーチ
ンを考えると、クライアントサイドルーチンインタフェ
ースは、クライアントコードおに存在するルーチンをコ
ールするためにサーバによって必要な特定動作を実現す
る。クライアントルーチンインタフェースは、実行され
るべき特定ルーチン及びモジュールに対する必要性をク
ライアントに知らせるために必要なファンクションを供
給する。クライアントルーチンインタフェースは、ま
た、アーギュメントを変換しかつルーチンを実行してい
るクライアントに渡し、かつクライアントからの結果を
リターンする。
【0018】以下のデータ構造及びファンクションコー
ルは、言語管理プログラムに対する特定言語インタフェ
ースを生成するために用いられるもののプロトタイプで
ある。これらのコールによって生成され又は用いられる
記述子は、より高級な言語管理プログラムファンクショ
ンによってリンクされたリストに維持され、かつ最低使
用頻度(LRU)キャッシングの対象でありうる。全て
の支援UDR言語は、これらのコールのそれぞれのイン
スタンスを供給する。コールは、単一の共有オブジェク
トモジュールからロードされる。初期化ファンクション
ネームは、各言語に対してSYSROUTINELANGS システムカ
タログ表に記憶される。 STATUS udrlm XLANG init( udrlm ldesc* Idesc);//descriptor to fill in あらゆる言語特定初期化を実行する。この言語への最初
のリファレンスのときに一度コールされる。必要に応じ
て udrlm ldesc ファンクションポインタ及び言語特定
フィールドを充たす。全てのメモリは、システムワイド
プールから割り当てられるべきである。サクセスでFUNC
SUCCをリターンする。 STATUS udrLn XLANG shut( udrlm ldesc* Idesc); //Language descriptor あらゆる言語特定クリーンアップを実行する。この言語
を参照する最後のルーチンのアンロードディングのとき
に一度コールされる。初期化時に割り当てられたリソー
スをフリーにする。サクセスでFUNCSUCCをリターンす
る。 STATUS udrlm XLANG parse( char* external name, // external name from user char* module, //module name char* symbol); //symbol name
ルは、言語管理プログラムに対する特定言語インタフェ
ースを生成するために用いられるもののプロトタイプで
ある。これらのコールによって生成され又は用いられる
記述子は、より高級な言語管理プログラムファンクショ
ンによってリンクされたリストに維持され、かつ最低使
用頻度(LRU)キャッシングの対象でありうる。全て
の支援UDR言語は、これらのコールのそれぞれのイン
スタンスを供給する。コールは、単一の共有オブジェク
トモジュールからロードされる。初期化ファンクション
ネームは、各言語に対してSYSROUTINELANGS システムカ
タログ表に記憶される。 STATUS udrlm XLANG init( udrlm ldesc* Idesc);//descriptor to fill in あらゆる言語特定初期化を実行する。この言語への最初
のリファレンスのときに一度コールされる。必要に応じ
て udrlm ldesc ファンクションポインタ及び言語特定
フィールドを充たす。全てのメモリは、システムワイド
プールから割り当てられるべきである。サクセスでFUNC
SUCCをリターンする。 STATUS udrLn XLANG shut( udrlm ldesc* Idesc); //Language descriptor あらゆる言語特定クリーンアップを実行する。この言語
を参照する最後のルーチンのアンロードディングのとき
に一度コールされる。初期化時に割り当てられたリソー
スをフリーにする。サクセスでFUNCSUCCをリターンす
る。 STATUS udrlm XLANG parse( char* external name, // external name from user char* module, //module name char* symbol); //symbol name
【0019】所与のexternal name string を後続言語
ファンクションによって用いられるべきモジュールネー
ムキー値及びシンボルネームに構文解析する。モジュー
ルアーギュメントは、モジュールネームに設定されかつ
ストリングのあらゆる他の情報は、シンボルアーギュメ
ントに構文解析される。モジュールネームがなければ、
固有のストリング、例えば、“NULL" がexternal name
にコピーされるべきである。external nameストリング
に余分な情報がないならば、シンボルアーギュメント
は、ナルストリングにセットされる。安全のために、両
方のアーギュメントは、SYS PROCEDURES表の完全な外
部ネーム(external name )属性のサイズにすべきであ
る。このファンクションは、udrlm mdesc 構造を初期
化するときに用いられる。 STATUS udrlm XLANG load( proccache t*rdesc, //routine descriptor udrlm mdesc*mdesc ); //module descripter 例えば、共有オブジェクトをリンクしかつシンボルを見
つけるような、特定されたルーチン及びモジュールのあ
らゆる言語特定ローディングを実行する。mdesc リファ
レンスカウントフィールドがゼロであるならば、構造
は、完全には初期化されておらずかつこれは、rdesc で
特定されたモジュールへの最初のリファレンスである。
この場合にはこのファンクションは、モジュールをロー
ドしかつに必要によりmdesc 言語特定フィールドを充た
す。モジュールがロードされた後このファンクション
は、ゼロより大きいmdesc リファレンスカウントで再び
コールされる。これらの場合、特定ルーチンは、ロード
されかつrdesc 言語特定フィールドが適切に充たされる
べきである。(例えば、C言語では、最初のコールは、
dlopen()を行いかつ後続コールは、モジュールにおける
ファンクションを位置決めするためにdlsym()sを行
う。)全てのメモリは、システムワイドプールから割り
当てられるべきである。サクセスでFUNCSUCCをリターン
する。 STATUS udrlm XLANG unload( udrlm ndesc* mdesc ); // module descriptor
ファンクションによって用いられるべきモジュールネー
ムキー値及びシンボルネームに構文解析する。モジュー
ルアーギュメントは、モジュールネームに設定されかつ
ストリングのあらゆる他の情報は、シンボルアーギュメ
ントに構文解析される。モジュールネームがなければ、
固有のストリング、例えば、“NULL" がexternal name
にコピーされるべきである。external nameストリング
に余分な情報がないならば、シンボルアーギュメント
は、ナルストリングにセットされる。安全のために、両
方のアーギュメントは、SYS PROCEDURES表の完全な外
部ネーム(external name )属性のサイズにすべきであ
る。このファンクションは、udrlm mdesc 構造を初期
化するときに用いられる。 STATUS udrlm XLANG load( proccache t*rdesc, //routine descriptor udrlm mdesc*mdesc ); //module descripter 例えば、共有オブジェクトをリンクしかつシンボルを見
つけるような、特定されたルーチン及びモジュールのあ
らゆる言語特定ローディングを実行する。mdesc リファ
レンスカウントフィールドがゼロであるならば、構造
は、完全には初期化されておらずかつこれは、rdesc で
特定されたモジュールへの最初のリファレンスである。
この場合にはこのファンクションは、モジュールをロー
ドしかつに必要によりmdesc 言語特定フィールドを充た
す。モジュールがロードされた後このファンクション
は、ゼロより大きいmdesc リファレンスカウントで再び
コールされる。これらの場合、特定ルーチンは、ロード
されかつrdesc 言語特定フィールドが適切に充たされる
べきである。(例えば、C言語では、最初のコールは、
dlopen()を行いかつ後続コールは、モジュールにおける
ファンクションを位置決めするためにdlsym()sを行
う。)全てのメモリは、システムワイドプールから割り
当てられるべきである。サクセスでFUNCSUCCをリターン
する。 STATUS udrlm XLANG unload( udrlm ndesc* mdesc ); // module descriptor
【0020】例えば、共有オブジェクトをアンリンクす
るような、特定されたモジュールのあらゆる言語特定ア
ンローディングを実行する。サクセスでFUNCSUCCをリタ
ーンする。 STATUS udrlm XLANG context open( proccache t* rdesc, //routine descriptor udrlm rinst** rinst); //instance descriptor (ref) このファンクションは、ステートメントにおけるユーザ
ルーチンの最初の実行の前に(例えば、SQLステート
メントの開始において、又は新しいレートバウンドルー
チンが分解されるときに)コールされる。*rinstがNULL
であれば、このファンクションは、新しい構造及びUD
Rに対する言語コンテキストによって必要なあらゆる他
のメモリを割り当てる。さもなければ、これは、キャッ
シュからリサイクルされている先に割り当てられたコン
テキスト構造でありかつ参照されたルーチンの最初の使
用に対して初期化される。メモリは、セッションプール
から割り当てられるべきである。サクセスでFUNCSUCCを
リターンする。記: このファンクションは、割り当て
コールの数を最小化しかつメモリ細分化を低減するため
に共用及び言語特定メモリの両方を割り当てる。例え
ば、論理的に、言語状態以外の全て。 STATUS udrlm XLANG context close( udrlm rinst* rinst); //Instance descriptor コンテキスト構造の最終使用の後であらゆる言語特定ク
リーンアップを実行する。それは、rinst 構造及び関連
言語特定リソースをフリーにする。キャッシュされた記
述子が取り除かれるときにコールされる。サクセスでFU
NCSUCCをリターンする。 STATUS udrlm XLANG execute( udrlm rinst* rinst, //instance descriptor void* args, //arguments void* rets); //return values
るような、特定されたモジュールのあらゆる言語特定ア
ンローディングを実行する。サクセスでFUNCSUCCをリタ
ーンする。 STATUS udrlm XLANG context open( proccache t* rdesc, //routine descriptor udrlm rinst** rinst); //instance descriptor (ref) このファンクションは、ステートメントにおけるユーザ
ルーチンの最初の実行の前に(例えば、SQLステート
メントの開始において、又は新しいレートバウンドルー
チンが分解されるときに)コールされる。*rinstがNULL
であれば、このファンクションは、新しい構造及びUD
Rに対する言語コンテキストによって必要なあらゆる他
のメモリを割り当てる。さもなければ、これは、キャッ
シュからリサイクルされている先に割り当てられたコン
テキスト構造でありかつ参照されたルーチンの最初の使
用に対して初期化される。メモリは、セッションプール
から割り当てられるべきである。サクセスでFUNCSUCCを
リターンする。記: このファンクションは、割り当て
コールの数を最小化しかつメモリ細分化を低減するため
に共用及び言語特定メモリの両方を割り当てる。例え
ば、論理的に、言語状態以外の全て。 STATUS udrlm XLANG context close( udrlm rinst* rinst); //Instance descriptor コンテキスト構造の最終使用の後であらゆる言語特定ク
リーンアップを実行する。それは、rinst 構造及び関連
言語特定リソースをフリーにする。キャッシュされた記
述子が取り除かれるときにコールされる。サクセスでFU
NCSUCCをリターンする。 STATUS udrlm XLANG execute( udrlm rinst* rinst, //instance descriptor void* args, //arguments void* rets); //return values
【0021】与えられたアーギュメントを用いてルーチ
ンをセットアップしかつ実行する。rinst は、このルー
チンへの複数のコールを通して状態情報を維持するため
の用いられる。リターン値は、rotsに配置されかつリタ
ーン状態は、成功した実行でrinst に配置される。STAT
USリターンは、実行試行の結果を示し、UDRそれ自体
の結果ではない。 STATUS reload module( ModuleName, //module to reinstall Language) //language to use このファンクションは、ルーチンモジュールをリロード
するためにSQLからコールされうる。このファンクシ
ョンが動作している間のこのモジュールを参照している
UDRsの全ての実行は、ステートメントの終りまで古
いモジュールを使用し続ける。モジュールがまだインス
トールされていないならば、それは、初めてロードされ
る。 STATUS replace module( OldModuleName, //module to reinstall NewModuleName, //new module to use Language) //language to use このファンクションは、ルーチンモジュールを置換する
ためにSQLからコールされうる。このファンクション
が動作している間のこのモジュールを参照しているUD
Rsの全ての実行は、ステートメントの終りまで古いモ
ジュールを使用し続ける。
ンをセットアップしかつ実行する。rinst は、このルー
チンへの複数のコールを通して状態情報を維持するため
の用いられる。リターン値は、rotsに配置されかつリタ
ーン状態は、成功した実行でrinst に配置される。STAT
USリターンは、実行試行の結果を示し、UDRそれ自体
の結果ではない。 STATUS reload module( ModuleName, //module to reinstall Language) //language to use このファンクションは、ルーチンモジュールをリロード
するためにSQLからコールされうる。このファンクシ
ョンが動作している間のこのモジュールを参照している
UDRsの全ての実行は、ステートメントの終りまで古
いモジュールを使用し続ける。モジュールがまだインス
トールされていないならば、それは、初めてロードされ
る。 STATUS replace module( OldModuleName, //module to reinstall NewModuleName, //new module to use Language) //language to use このファンクションは、ルーチンモジュールを置換する
ためにSQLからコールされうる。このファンクション
が動作している間のこのモジュールを参照しているUD
Rsの全ての実行は、ステートメントの終りまで古いモ
ジュールを使用し続ける。
【0022】特定言語を用いている第1のルーチンが呼
出される場合は、言語インタフェースそれ自体は、ロー
ドされかつ以下のステップに従って初期化される: 1)udrlm ldesc 構成が言語に対して位置決めされる
か又は生成される。 2)言語に対する行がSYSROUTINELANGS カタログから選
択される。この言語に対する行が存在しないならばエラ
ーがリターンされる。 3)SYSROUTINELANGS 表の“langinitfunc" 属性によっ
て特定された行は、SYS PROCEDURESカタログの言語初期
化ルーチンを特定する。 4)標準C言語ロードモジュール動作が実行行される: − udrlm mdesc 構成及び一時的udrlm rdesc
構成は、SYS PROCEDURES表から初期化される。 − 組込みC言語udrlm clang load module()
ファンクションは、言語初期化インタフェースモジュー
ルをロードするためにコールされる。 6)langinitfunc属性で参照されたudrlm XLANG in
it()ファンクションは、udrlm ldesc 構成を初期化す
るためにコールされる。
出される場合は、言語インタフェースそれ自体は、ロー
ドされかつ以下のステップに従って初期化される: 1)udrlm ldesc 構成が言語に対して位置決めされる
か又は生成される。 2)言語に対する行がSYSROUTINELANGS カタログから選
択される。この言語に対する行が存在しないならばエラ
ーがリターンされる。 3)SYSROUTINELANGS 表の“langinitfunc" 属性によっ
て特定された行は、SYS PROCEDURESカタログの言語初期
化ルーチンを特定する。 4)標準C言語ロードモジュール動作が実行行される: − udrlm mdesc 構成及び一時的udrlm rdesc
構成は、SYS PROCEDURES表から初期化される。 − 組込みC言語udrlm clang load module()
ファンクションは、言語初期化インタフェースモジュー
ルをロードするためにコールされる。 6)langinitfunc属性で参照されたudrlm XLANG in
it()ファンクションは、udrlm ldesc 構成を初期化す
るためにコールされる。
【0023】特定言語を用いているUDRへの最後のリ
ファレンスがドロップされた場合、言語インタフェース
は、遮断されかつ取り除かれる。言語ドロップ中に発生
するステップは: 1)言語のudrlm ldesc は、この言語を用いることか
ら新しいルーチンを防ぐために言語リストから取り除か
れる。 2)udrlm XLANG shut()ファンクションは、リソー
スをクリーンアップするためにコールされる。 3)組込みC言語udrlm clang unload module()フ
ァンクションは、言語インタフェースモジュールをアン
ロードするためにコールされる。 考慮下の言語を参照するルーチンがその後に呼出され、
かつSYSROUTINELANGS及びSYS PROCEDURESカタログの
言語エントリがDELETED (削除)されていないならば、
特定された言語モジュールは、リロードされかつ初期化
される。カタログエントリがDELETED (削除)されるな
らば、後続のファンクション呼出しは、言語をロードす
ることを試みるが、言語がカタログに見出されなかった
ときにエラーが発生する。
ファレンスがドロップされた場合、言語インタフェース
は、遮断されかつ取り除かれる。言語ドロップ中に発生
するステップは: 1)言語のudrlm ldesc は、この言語を用いることか
ら新しいルーチンを防ぐために言語リストから取り除か
れる。 2)udrlm XLANG shut()ファンクションは、リソー
スをクリーンアップするためにコールされる。 3)組込みC言語udrlm clang unload module()フ
ァンクションは、言語インタフェースモジュールをアン
ロードするためにコールされる。 考慮下の言語を参照するルーチンがその後に呼出され、
かつSYSROUTINELANGS及びSYS PROCEDURESカタログの
言語エントリがDELETED (削除)されていないならば、
特定された言語モジュールは、リロードされかつ初期化
される。カタログエントリがDELETED (削除)されるな
らば、後続のファンクション呼出しは、言語をロードす
ることを試みるが、言語がカタログに見出されなかった
ときにエラーが発生する。
【0024】更に、モジュールを参照する全てのルーチ
ンがドロップした場合、モジュールも取り除かれる。モ
ジュールDROP(ドロップ)中に取られるステップは: 1)udrlm unload()ファンクションがルーチンに対し
てコールされる。 2)これが特定モジュールへの最後のリファレンスであ
れば、それは、言語のudrlm XLANG unload module
()ファンクションをコールすることによって取り除かれ
る。 3)これが言語への最後のリファレンスであれば、 a.udrlm XLANG shut()ファンクションがコールさ
れる。 B.udrlm ldesc がフリーにされる。 C.組込みC言語udrlm clang unload module()フ
ァンクションは、言語インタフェースモジュールをアン
ロードするためにコールされる。 D.言語モジュールのudrlm mdesc がフリーにされ
る。 ここで図3を参照すると、典型的なシステム手続き(SY
S PROCEDURE )表が示されている。SYS PROCEDURE
表は、多数のアーギュメント、アーギュメント型列、リ
ターン型列、言語型列及び言語特定宣言列を有する。SY
S PROCEDURE表を用いて、UDR決定子184は、言
語型、受入れられたアーギュメントの数、リターンすべ
きアーギュメントの型、及び他の言語/ルーチン特定情
報を含んでいる、解析されるファンクションのスペシフ
ィックス(specifics) をルックアップすることができ
る。
ンがドロップした場合、モジュールも取り除かれる。モ
ジュールDROP(ドロップ)中に取られるステップは: 1)udrlm unload()ファンクションがルーチンに対し
てコールされる。 2)これが特定モジュールへの最後のリファレンスであ
れば、それは、言語のudrlm XLANG unload module
()ファンクションをコールすることによって取り除かれ
る。 3)これが言語への最後のリファレンスであれば、 a.udrlm XLANG shut()ファンクションがコールさ
れる。 B.udrlm ldesc がフリーにされる。 C.組込みC言語udrlm clang unload module()フ
ァンクションは、言語インタフェースモジュールをアン
ロードするためにコールされる。 D.言語モジュールのudrlm mdesc がフリーにされ
る。 ここで図3を参照すると、典型的なシステム手続き(SY
S PROCEDURE )表が示されている。SYS PROCEDURE
表は、多数のアーギュメント、アーギュメント型列、リ
ターン型列、言語型列及び言語特定宣言列を有する。SY
S PROCEDURE表を用いて、UDR決定子184は、言
語型、受入れられたアーギュメントの数、リターンすべ
きアーギュメントの型、及び他の言語/ルーチン特定情
報を含んでいる、解析されるファンクションのスペシフ
ィックス(specifics) をルックアップすることができ
る。
【0025】ここで図4を参照すると、照会(問合せ)
実行処理200が示されている。処理200では、クラ
イアントは、サーバ110へSQLコマンドを初めに送
る(ステップ202)。次に、サーバ110は、コマン
ドを構文解析する(ステップ204)。一度構文解析さ
れると、照会は、オプティマイザによってステップ20
6で最適化される。。次に、プロセス200を出る前に
(ステップ210)要求された照会を実行するための命
令が実行される(ステップ208)。ここで図5を参照
すると、構文解析プロセス204(図4)が詳細に示さ
れている。最初、プロセス204は、SQLコマンドか
ら呼出されるファンクションを識別する(ステップ22
2)。次に、プロセス204は、図3のSYS PROCEDUR
E 表を用いてファンクションコールを特定のインスタン
スに分解する(ステップ224)。構文解析プロセス2
04は、次いで、呼出されている特定の言語を識別する
(ステップ226)。次に、プロセス204は、所望言
語管理プログラムが既にメモリにロードされているかど
うかを決定する(ステップ228)。まだロードされて
いなければ、所望の言語管理プログラムがロードされる
(ステップ230)。代替え的に、言語管理プログラム
がロードされたならば、プロセス204は、ステップ2
32に進む。
実行処理200が示されている。処理200では、クラ
イアントは、サーバ110へSQLコマンドを初めに送
る(ステップ202)。次に、サーバ110は、コマン
ドを構文解析する(ステップ204)。一度構文解析さ
れると、照会は、オプティマイザによってステップ20
6で最適化される。。次に、プロセス200を出る前に
(ステップ210)要求された照会を実行するための命
令が実行される(ステップ208)。ここで図5を参照
すると、構文解析プロセス204(図4)が詳細に示さ
れている。最初、プロセス204は、SQLコマンドか
ら呼出されるファンクションを識別する(ステップ22
2)。次に、プロセス204は、図3のSYS PROCEDUR
E 表を用いてファンクションコールを特定のインスタン
スに分解する(ステップ224)。構文解析プロセス2
04は、次いで、呼出されている特定の言語を識別する
(ステップ226)。次に、プロセス204は、所望言
語管理プログラムが既にメモリにロードされているかど
うかを決定する(ステップ228)。まだロードされて
いなければ、所望の言語管理プログラムがロードされる
(ステップ230)。代替え的に、言語管理プログラム
がロードされたならば、プロセス204は、ステップ2
32に進む。
【0026】ステップ228又は230から、構文解析
プロセス204は、ステップ232に進みそこで語管理
プログラムは、呼出されたファンクションがメモリに既
にロードされているかどうかを決定する。既にロードさ
れていなければ、プロセス204は、所望のファンクシ
ョンをインスタンス生成し(ステップ234)かつ必要
に応じて特定ファンクション初期化を実行する(ステッ
プ236)。ステップ236又はステップ232から、
呼出されているファンクションが既にロードされている
という場合には、ルーチン204は、実行コンテキスト
を生成する(ステップ238)。次に、構文解析ファン
クション204を出る(ステップ240)。
プロセス204は、ステップ232に進みそこで語管理
プログラムは、呼出されたファンクションがメモリに既
にロードされているかどうかを決定する。既にロードさ
れていなければ、プロセス204は、所望のファンクシ
ョンをインスタンス生成し(ステップ234)かつ必要
に応じて特定ファンクション初期化を実行する(ステッ
プ236)。ステップ236又はステップ232から、
呼出されているファンクションが既にロードされている
という場合には、ルーチン204は、実行コンテキスト
を生成する(ステップ238)。次に、構文解析ファン
クション204を出る(ステップ240)。
【0027】図6は、ルーチン管理プログラム188と
言語管理プログラム190〜192との対話(インタラ
ックション)の詳細を示す。管理プログラム188、1
90及び192は、ルーチン後段−決定層302、後段
−決定層のインスタンス303、レートバウンド実行層
320、繰返し実行層321及びクリーンアップ層33
0を含んでいる複数の中間層を介して対話する。層及び
管理プログラム間の対話は、以下に説明する、データ構
成(構造)を用いることにより達成される。
言語管理プログラム190〜192との対話(インタラ
ックション)の詳細を示す。管理プログラム188、1
90及び192は、ルーチン後段−決定層302、後段
−決定層のインスタンス303、レートバウンド実行層
320、繰返し実行層321及びクリーンアップ層33
0を含んでいる複数の中間層を介して対話する。層及び
管理プログラム間の対話は、以下に説明する、データ構
成(構造)を用いることにより達成される。
【0028】ルーチン記述子(RDESC) 構成は、特定のル
ーチンについての静的情報を保管するための全てのセッ
ションのLMコンポーネントによって用いられる。RDES
C 構成は、システム−ワイドな共有メモリに割り当てら
れかつ再使用のためにキャッシュされる。ルーチンイン
スタンス(RINST) 構成は、SQLステートメントのルー
チンシーケンスのコンテキストを記述する。RINST 構成
は、ルーチンの静的、状態、及び各実行に対する動的デ
ータへのリファレンスを含む。各ルーチン呼出しは、別
個のRINST を論理的に有するが、効率のために、これら
の構成は、セッション−ワイドに基づきステートメント
間でキャッシュされかつリサイクルされうる。
ーチンについての静的情報を保管するための全てのセッ
ションのLMコンポーネントによって用いられる。RDES
C 構成は、システム−ワイドな共有メモリに割り当てら
れかつ再使用のためにキャッシュされる。ルーチンイン
スタンス(RINST) 構成は、SQLステートメントのルー
チンシーケンスのコンテキストを記述する。RINST 構成
は、ルーチンの静的、状態、及び各実行に対する動的デ
ータへのリファレンスを含む。各ルーチン呼出しは、別
個のRINST を論理的に有するが、効率のために、これら
の構成は、セッション−ワイドに基づきステートメント
間でキャッシュされかつリサイクルされうる。
【0029】言語記述子(LDESC) 構成は、LM動作を適
当な言語ファンクションにベクトルする(進路指示す
る)ために用いられる。LDESC 構造は、言語が言語管理
プログラムによって初期化されかつ言語リストにリンク
された場合に言語特定コードによって記入される。モジ
ュール記述子(MDESC) 構成は、それぞれが多くのルーチ
ンを含みうる単一のUDRモジュールを記述するために
用いられる。MDESC 構成は、モジュールのネームを含ん
でいる、パブリック情報、及びモジュールの言語ファン
クションによってだけ用いられるプライベート情報を含
む。MDESC 構成は、モジュールが言語管理プログラムに
よってロードされかつモジュールリストにリンクされる
場合に、記入される。ここで、各ルーチンに対して、後
段−決定中間層302及び303を参照すると、後段−
決定層302は、言語管理プログラムルーチン304に
キーを供給し、それは次いでRDESC 構成をロードする。
LMロードルーチン304が実行された後、RDESC 構成
は、言語初期化モジュール306に渡される。RDESC デ
ータ構成が初期化された後、RDESC 構成は、ロードモジ
ュール308に供給され、その後にRDESC 構成が完全に
初期化される。
当な言語ファンクションにベクトルする(進路指示す
る)ために用いられる。LDESC 構造は、言語が言語管理
プログラムによって初期化されかつ言語リストにリンク
された場合に言語特定コードによって記入される。モジ
ュール記述子(MDESC) 構成は、それぞれが多くのルーチ
ンを含みうる単一のUDRモジュールを記述するために
用いられる。MDESC 構成は、モジュールのネームを含ん
でいる、パブリック情報、及びモジュールの言語ファン
クションによってだけ用いられるプライベート情報を含
む。MDESC 構成は、モジュールが言語管理プログラムに
よってロードされかつモジュールリストにリンクされる
場合に、記入される。ここで、各ルーチンに対して、後
段−決定中間層302及び303を参照すると、後段−
決定層302は、言語管理プログラムルーチン304に
キーを供給し、それは次いでRDESC 構成をロードする。
LMロードルーチン304が実行された後、RDESC 構成
は、言語初期化モジュール306に渡される。RDESC デ
ータ構成が初期化された後、RDESC 構成は、ロードモジ
ュール308に供給され、その後にRDESC 構成が完全に
初期化される。
【0030】初期化されたRDESC 構成は、次いで、後段
−決定中間層303に供給され、そこで、各インスタン
スに対して、言語管理プログラムコンテキストオープン
モジュール310及びコンテキストオープンモジュール
312は、ルーチン記述子RDESC 構成をプロセスする。
後段−決定層303から、完全に初期化されたRDESC構
成がLMコンテキストオープンモジュール310へ供給
され、そこで次にRINST データ構成を生成する。RINST
データ構成は、それが後段−決定層303に戻される前
にこの段階で初期化される。後段−決定層303からの
処理の終了により、ルーチン管理プログラム層300
は、レート−バウンド実行層320及び繰返し実行層3
21に更に分割することができる実行中間層にRDESC 構
成を供給する。
−決定中間層303に供給され、そこで、各インスタン
スに対して、言語管理プログラムコンテキストオープン
モジュール310及びコンテキストオープンモジュール
312は、ルーチン記述子RDESC 構成をプロセスする。
後段−決定層303から、完全に初期化されたRDESC構
成がLMコンテキストオープンモジュール310へ供給
され、そこで次にRINST データ構成を生成する。RINST
データ構成は、それが後段−決定層303に戻される前
にこの段階で初期化される。後段−決定層303からの
処理の終了により、ルーチン管理プログラム層300
は、レート−バウンド実行層320及び繰返し実行層3
21に更に分割することができる実行中間層にRDESC 構
成を供給する。
【0031】レート−バウンド実行層320の場合に
は、ルーチンインスタンスデータ構成が言語管理プログ
ラム共有状態モジュール322に供給される。共有状態
モジュール322は、状態情報をRINST データ構成にコ
ピーする。更新されたRINST データ構成は、レート−バ
ウンド実行層320に戻される。加えて、各繰返しに対
し、ルーチンインスタンスRINST データ構成並びにアー
ギュメントは、LM実行ルーチン324に供給される。
結果として得られたRINST 及びLM実行ルーチン324
からの出力は、繰返し実行ユニット321へ出力を戻す
実行ルーチン326に供給される。繰返し実行ユニット
321から、ルーチン管理プログラム層300は、クリ
ーンアップ層330と通信し、各インスタンスに対し
て、種々のデータ構成に関連するデータ記憶装置及びメ
モリの割り当てを解除するためにLMコンテキストクロ
ーズモジュール332にRINST データ構成を供給する。
RINST データ構成は、次いで、状態情報をクリーンアッ
プ層330に供給するコンテキストクローズモジュール
334に渡される。
は、ルーチンインスタンスデータ構成が言語管理プログ
ラム共有状態モジュール322に供給される。共有状態
モジュール322は、状態情報をRINST データ構成にコ
ピーする。更新されたRINST データ構成は、レート−バ
ウンド実行層320に戻される。加えて、各繰返しに対
し、ルーチンインスタンスRINST データ構成並びにアー
ギュメントは、LM実行ルーチン324に供給される。
結果として得られたRINST 及びLM実行ルーチン324
からの出力は、繰返し実行ユニット321へ出力を戻す
実行ルーチン326に供給される。繰返し実行ユニット
321から、ルーチン管理プログラム層300は、クリ
ーンアップ層330と通信し、各インスタンスに対し
て、種々のデータ構成に関連するデータ記憶装置及びメ
モリの割り当てを解除するためにLMコンテキストクロ
ーズモジュール332にRINST データ構成を供給する。
RINST データ構成は、次いで、状態情報をクリーンアッ
プ層330に供給するコンテキストクローズモジュール
334に渡される。
【0032】図7を参照すると、UDR言語管理プログ
ラムエンティティ関係図が示されている。この図では、
4つの可能な関係380〜386が存在する。二つの平
行線によって例示された、関係380は、1 対1 関係を
示す。1 対多数関係を示す、関係382は、左向き矢印
の次の線によって示されている。ゼロ対マッピングを示
す、関係384は、左向き矢印の次の円として示されて
いる。そして、関係386のゼロ対1関係は、垂直線の
次のゼロとして示されている。UDR言語管理プログラ
ムエンティティ関係は、関係380〜386のコンテキ
ストにおいて説明される。
ラムエンティティ関係図が示されている。この図では、
4つの可能な関係380〜386が存在する。二つの平
行線によって例示された、関係380は、1 対1 関係を
示す。1 対多数関係を示す、関係382は、左向き矢印
の次の線によって示されている。ゼロ対マッピングを示
す、関係384は、左向き矢印の次の円として示されて
いる。そして、関係386のゼロ対1関係は、垂直線の
次のゼロとして示されている。UDR言語管理プログラ
ムエンティティ関係は、関係380〜386のコンテキ
ストにおいて説明される。
【0033】図7では、記憶モジュール(Storage Modul
e)372は、それぞれがルーチンキー(Routine Key) 3
50によって表される、一つ以上のルーチンを含みう
る。言語モジュール(Language Module) 370は、一つ
以上の記憶モジュール372を参照しうる。各記憶モジ
ュール372は、ちょうど一つのモジュール記述子37
4を有し、かつ各言語モジュール370は、ちょうど一
つの言語記述子376を有する。言語記述子376は、
次に、一つ以上の言語によって用いられうる、モジュー
ル記述子374を有する。ルーチン記述子352は、一
つのモジュール記述子374を有する。モジュール記述
子は、一つ以上のルーチン記述子352によって参照さ
れうる。各ルーチン記述子352は、一つのアーギュメ
ント記述(Argument Description)354及び一つのリ
ターン記述(Return Description)356を含む。ルー
チン記述子352は、ゼロから多数のルーチンインスタ
ンス358に含まれうる。各ルーチンインスタンスは、
いずれも他のルーチンインスタンス358によって参照
されない、1つのルーチンアーギュメントリスト36
6、一つのルーチンリターンリスト364、一つのルー
チン状態セット362、及び一つのルーチンコンテキス
ト360を含む。
e)372は、それぞれがルーチンキー(Routine Key) 3
50によって表される、一つ以上のルーチンを含みう
る。言語モジュール(Language Module) 370は、一つ
以上の記憶モジュール372を参照しうる。各記憶モジ
ュール372は、ちょうど一つのモジュール記述子37
4を有し、かつ各言語モジュール370は、ちょうど一
つの言語記述子376を有する。言語記述子376は、
次に、一つ以上の言語によって用いられうる、モジュー
ル記述子374を有する。ルーチン記述子352は、一
つのモジュール記述子374を有する。モジュール記述
子は、一つ以上のルーチン記述子352によって参照さ
れうる。各ルーチン記述子352は、一つのアーギュメ
ント記述(Argument Description)354及び一つのリ
ターン記述(Return Description)356を含む。ルー
チン記述子352は、ゼロから多数のルーチンインスタ
ンス358に含まれうる。各ルーチンインスタンスは、
いずれも他のルーチンインスタンス358によって参照
されない、1つのルーチンアーギュメントリスト36
6、一つのルーチンリターンリスト364、一つのルー
チン状態セット362、及び一つのルーチンコンテキス
ト360を含む。
【0034】典型的なC言語インタフェース、ファンク
ションコールを供給する汎用言語インタフェース(Gene
ral Language Interface)のインスタンスは、以下に説
明する。 STATUS udrlm clang init( udrlm ldesc*); //language descriptor udrlm ldesc に記入する。このセクションの他のファ
ンクションは、言語管理プログラムによる使用のための
構成に入力される。これらのファンクションは、ローデ
ィングが必要ないようにCPUモジュールに静的にリン
クされる。成功によりFUNCSUCCをリターンする。 STATUS udrlm clang shut( udrlm ldesc*); //language descriptor C言語のudrlm ldesc 構成がクリアされないのでNOP 。 STATUS udrlm clang parse( char*, //external name from user char*, //module name char*); //symbol name 所与のexternal nameストリングからのモジュールネー
ムを構文解析する。external name argument がモジュ
ールネームに設定されかつストリングのエントリポイン
ト部分がsymbol name argument にコピーされる。モジ
ュールネームが存在しないならば、ストリング“CNULL"
がmodule nameにコピーされる。エントリポイントスト
リングが存在しないならば、symbol name argument
は、nullストリングに設定される。 STATUS udrlm clang load module( udrlm rdesc*, //routine descriptor udrlm mdesc*); //module descriptor ルーチン記述子及びモジュール記述子をロードする。
ションコールを供給する汎用言語インタフェース(Gene
ral Language Interface)のインスタンスは、以下に説
明する。 STATUS udrlm clang init( udrlm ldesc*); //language descriptor udrlm ldesc に記入する。このセクションの他のファ
ンクションは、言語管理プログラムによる使用のための
構成に入力される。これらのファンクションは、ローデ
ィングが必要ないようにCPUモジュールに静的にリン
クされる。成功によりFUNCSUCCをリターンする。 STATUS udrlm clang shut( udrlm ldesc*); //language descriptor C言語のudrlm ldesc 構成がクリアされないのでNOP 。 STATUS udrlm clang parse( char*, //external name from user char*, //module name char*); //symbol name 所与のexternal nameストリングからのモジュールネー
ムを構文解析する。external name argument がモジュ
ールネームに設定されかつストリングのエントリポイン
ト部分がsymbol name argument にコピーされる。モジ
ュールネームが存在しないならば、ストリング“CNULL"
がmodule nameにコピーされる。エントリポイントスト
リングが存在しないならば、symbol name argument
は、nullストリングに設定される。 STATUS udrlm clang load module( udrlm rdesc*, //routine descriptor udrlm mdesc*); //module descriptor ルーチン記述子及びモジュール記述子をロードする。
【0035】サーバ言語、この場合にはC、が言語管理
プログラムそれ自体の基礎をなすので、これらのファン
クションは、動的にロードされるよりもサーバ110で
コード化すべく組込まれる。更に、他の言語とは異な
り、C言語初期化ファンクションは、言語ローディング
時よりもシステム開始でコールされる。
プログラムそれ自体の基礎をなすので、これらのファン
クションは、動的にロードされるよりもサーバ110で
コード化すべく組込まれる。更に、他の言語とは異な
り、C言語初期化ファンクションは、言語ローディング
時よりもシステム開始でコールされる。
【0036】ここで説明した技法は、ハードウェア又は
ソフトウェア、或いはこれら二つの組合せで実現されう
る。技法は、それぞれがプロセッサ、(揮発性及び不揮
発性メモリ及び/又は記憶構成要素を含んでいる)プロ
セッサによって読取り可能な記憶媒体、及び適当な入力
及び出力装置を含むプログラマブルコンピュータ上で実
行しているコンピュータプログラムで実現されるのが好
ましい。プログラムコードは、記述されたファンクショ
ンを実行しかつ出力情報を生成するために入力装置を用
いて入力されたデータに供給(適用)される。出力情報
は、一つ以上の出力装置に供給(適用)される。各プロ
グラムは、コンピュータシステムと通信するために高レ
ベル手続き形又はオブジェクト指向型プログラミング言
語で実現されるのが好ましい。しかしならが、プログラ
ムは、望ましいならば、アッセンブリ又はマシン言語で
実現することができる。いずれにおいても、言語は、コ
ンパイル又は翻訳された言語である。
ソフトウェア、或いはこれら二つの組合せで実現されう
る。技法は、それぞれがプロセッサ、(揮発性及び不揮
発性メモリ及び/又は記憶構成要素を含んでいる)プロ
セッサによって読取り可能な記憶媒体、及び適当な入力
及び出力装置を含むプログラマブルコンピュータ上で実
行しているコンピュータプログラムで実現されるのが好
ましい。プログラムコードは、記述されたファンクショ
ンを実行しかつ出力情報を生成するために入力装置を用
いて入力されたデータに供給(適用)される。出力情報
は、一つ以上の出力装置に供給(適用)される。各プロ
グラムは、コンピュータシステムと通信するために高レ
ベル手続き形又はオブジェクト指向型プログラミング言
語で実現されるのが好ましい。しかしならが、プログラ
ムは、望ましいならば、アッセンブリ又はマシン言語で
実現することができる。いずれにおいても、言語は、コ
ンパイル又は翻訳された言語である。
【0037】各そのようなコンピュータプログラムは、
記憶媒体又は装置が上述した手続きを実行するためにコ
ンピュータによって読み取られるときにコンピュータを
構成しかつ動作するための汎用又は特殊用途プログラマ
ブルコンピュータによって読取り可能である記憶媒体又
は装置(例えば、CD−ROM、ハードディスク又は磁
気ディスケット)に記憶されるのが好ましい。また、シ
ステムは、コンピュータプログラムで構成された、コン
ピュータ−リーダブル記憶媒体として実現され、そのよ
うに構成された記憶媒体は、コンピュータを特定かつ所
定の方法で動作させる。他の実施例は、特許請求の範囲
の範疇内である。
記憶媒体又は装置が上述した手続きを実行するためにコ
ンピュータによって読み取られるときにコンピュータを
構成しかつ動作するための汎用又は特殊用途プログラマ
ブルコンピュータによって読取り可能である記憶媒体又
は装置(例えば、CD−ROM、ハードディスク又は磁
気ディスケット)に記憶されるのが好ましい。また、シ
ステムは、コンピュータプログラムで構成された、コン
ピュータ−リーダブル記憶媒体として実現され、そのよ
うに構成された記憶媒体は、コンピュータを特定かつ所
定の方法で動作させる。他の実施例は、特許請求の範囲
の範疇内である。
【0038】
【発明の効果】コンピュータ−動作型装置は、一つ以上
の言語で表現することができる一つ以上のユーザ定義ル
ーチン(UDRs)を支援する。装置は、システムカタ
ログをルックアップすることによってUDRに対してネ
イティブな言語をまず決定する。次に、装置は、ネイテ
ィブ言語と関連する言語管理プログラムが既にロードさ
れたかどうかをチェックしかつ既にロードされていない
ならば、装置は、言語管理プログラムをサーバメモリに
ロードする。装置は、次いで、UDRが既にインスタン
ス生成されたかどうかをチェックしかつインスタンス生
成されていないならば、UDRをインスタンス生成しか
つ初期化する。次いで、装置は、その後でUDRが実行
される、UDRに対する実行コンテキストを生成する。
言語管理プログラムのローディングは、言語管理プログ
ラム間を初期化し、言語管理プログラムをロードし、言
語管理プログラムコンテキストを生成し、かつ言語管理
プログラムを実行することができるような、一般言語イ
ンタフェースによって処理される。
の言語で表現することができる一つ以上のユーザ定義ル
ーチン(UDRs)を支援する。装置は、システムカタ
ログをルックアップすることによってUDRに対してネ
イティブな言語をまず決定する。次に、装置は、ネイテ
ィブ言語と関連する言語管理プログラムが既にロードさ
れたかどうかをチェックしかつ既にロードされていない
ならば、装置は、言語管理プログラムをサーバメモリに
ロードする。装置は、次いで、UDRが既にインスタン
ス生成されたかどうかをチェックしかつインスタンス生
成されていないならば、UDRをインスタンス生成しか
つ初期化する。次いで、装置は、その後でUDRが実行
される、UDRに対する実行コンテキストを生成する。
言語管理プログラムのローディングは、言語管理プログ
ラム間を初期化し、言語管理プログラムをロードし、言
語管理プログラムコンテキストを生成し、かつ言語管理
プログラムを実行することができるような、一般言語イ
ンタフェースによって処理される。
【0039】本発明の利点(効果)は、以下の一つ以上
を含みうる。ここで説明したシステムは、UDRsの実
現詳細とは独立した方法でUDRsをリレーショナルD
BMSで実行させる。更に、複数の言語に対する支援フ
ァシリティが設けられる。データベース言語管理プログ
ラムは、特定の言語及びそのUDR支援環境をデータベ
ースエンジン開発に続いて開発させる。更に、代替え支
援環境は、既存の言語に対して開発することができる。
加えて、サーバ又はコードモジュールを交換することな
く修復を行うことができる。UDRsは、多数の言語で
実現することができる。複数の言語の支援は、特定言語
の特定強度を利用するためにソフトウェアをコード化す
ることができるように、UDRsを実現することにおけ
る複雑さを低減する。更に、言語インタプリタは、実行
されているシステムに必要に応じて追加されるか又は変
更されうる。同様に、UDRsは、実行されているシス
テムに必要に応じて追加されるか又は変更されうる。こ
れらのUDRsは、データベースエンジンに対して新し
いデータ型及び動作を実現することを含む、任意のプロ
セッシングを実行しうる。
を含みうる。ここで説明したシステムは、UDRsの実
現詳細とは独立した方法でUDRsをリレーショナルD
BMSで実行させる。更に、複数の言語に対する支援フ
ァシリティが設けられる。データベース言語管理プログ
ラムは、特定の言語及びそのUDR支援環境をデータベ
ースエンジン開発に続いて開発させる。更に、代替え支
援環境は、既存の言語に対して開発することができる。
加えて、サーバ又はコードモジュールを交換することな
く修復を行うことができる。UDRsは、多数の言語で
実現することができる。複数の言語の支援は、特定言語
の特定強度を利用するためにソフトウェアをコード化す
ることができるように、UDRsを実現することにおけ
る複雑さを低減する。更に、言語インタプリタは、実行
されているシステムに必要に応じて追加されるか又は変
更されうる。同様に、UDRsは、実行されているシス
テムに必要に応じて追加されるか又は変更されうる。こ
れらのUDRsは、データベースエンジンに対して新し
いデータ型及び動作を実現することを含む、任意のプロ
セッシングを実行しうる。
【図1】DBMS及び一つ以上の言語管理プログラムを
有するサーバのブロック図である。
有するサーバのブロック図である。
【図2】各言語管理プログラムに対するコンポーネント
の概略図である。
の概略図である。
【図3】典型的なシステム手続き(SYS PROCEDURE)カタ
ログエントリを示す図である。
ログエントリを示す図である。
【図4】照会実行プロセスを示しているフローチャート
である。
である。
【図5】パーズプロセスを示しているフローチャートで
ある。
ある。
【図6】言語管理プログラム内のモジュール、及びルー
チン管理プログラムとそれらの対話の概略図である。
チン管理プログラムとそれらの対話の概略図である。
【図7】UDR言語管理プログラムエンティティ関係図
である。
である。
100 110 データベースサーバ 178、198 クライアント 180 パーサ 184 UDR決定子 186 システムカタログ 188 ルーチン管理プログラム 190〜192 言語管理プログラム 194、197 共有メモリ 196 Java仮想マシン
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マイケル エフ シップリング アメリカ合衆国 カリフォルニア州 94702 オークランド メイベル ストリ ート 2810
Claims (22)
- 【請求項1】 一つ以上の言語で表現することができる
一つ以上のユーザ定義ルーチン(UDRs)を操作する
ための、データベースサーバによって実行される、方法
であって:UDRに対してネイティブな言語を決定し;
決定されたネイティブ言語に関連する言語管理プログラ
ムが既にロードされているかどうかをチェックしかつま
だロードされていないならば、言語管理プログラムをサ
ーバメモリにロードし;UDRが既にインスタンス生成
されているかどうかをチェックしかつまだインスタンス
生成されていないならば、前記UDRをインスタンス生
成しかつ初期化し;そして前記UDRに対する実行コン
テキストを生成する段階を具備することを特徴とする方
法。 - 【請求項2】 前記UDRを実行する段階を更に具備す
ることを特徴とする請求項1に記載の方法。 - 【請求項3】 C言語管理プログラムを供給する段階を
更に具備することを特徴とする請求項1に記載の方法。 - 【請求項4】 Java言語管理プログラムを供給する
段階を更に具備することを特徴とする請求項1に記載の
方法。 - 【請求項5】 前記Java言語管理プログラムは、共
有メモリを用いてJava仮想マシンと通信することを
特徴とする請求項1に記載の方法。 - 【請求項6】 前記UDRに対してネイティブな言語を
決定する段階は、システムカタログをルックアップする
段階を更に具備することを特徴とする請求項1に記載の
方法。 - 【請求項7】 ルーチン記述子(RDESC)構成、ル
ーチンインスタンス(RINST)構成、言語記述子
(LDESC)構成及びモジュール記述子(MDES
C)構成を生成しかつ初期化する段階を更に具備するこ
とを特徴とする請求項1に記載の方法。 - 【請求項8】 前記言語管理プログラムをローディング
する段階は、前記言語管理プログラムを初期化し、前記
言語管理プログラムをローディングし、言語管理プログ
ラムコンテキストを生成し、かつ前記言語管理プログラ
ムを実行することができる汎用言語インタフェースを供
給する段階を更に具備することを特徴とする請求項1に
記載の方法。 - 【請求項9】 一つ以上の言語で表現することができる
一つ以上のユーザ定義ルーチン(UDRs)を操作する
ための、データベースサーバによって実行される、方法
であって:UDRに対してネイティブな言語を決定し;
決定されたネイティブ言語に関連する言語管理プログラ
ムを選択的にイネーブルし;前記選択的にイネーブルさ
れた言語管理プログラムを用いて前記UDRを実行する
段階を具備することを特徴とする方法。 - 【請求項10】 プロセッサ;前記プロセッサに結合さ
れたメモリアレイ;前記プロセッサに結合されたディス
プレイ;前記プロセッサに結合され、一つ以上の言語で
表現することができる一つ以上のユーザ定義ルーチン
(UDRs)を操作するためのデータベース管理システ
ム(DBMS)を記憶するためのデータ記憶装置;及び
以下の動作を実行するために前記メモリアレイ又は前記
データ記憶装置に存在するソフトウェア:UDRに対し
てネイティブな言語を決定し;前記ネイティブ言語に関
連する言語管理プログラムが既にロードされているかど
うかをチェックしかつまだロードされていないならば、
前記言語管理プログラムをサーバメモリにロードし;前
記UDRが既にインスタンス生成されているかどうかを
チェックしかつまだインスタンス生成されていないなら
ば、前記UDRをインスタンス生成しかつ初期化し;か
つ前記UDRに対する実行コンテキストを生成するを備
えていることを特徴とするコンピュータシステム。 - 【請求項11】 前記言語−特定仮想管理プログラムと
言語マシンとの間で通信するための共有メモリを更に備
えていることを特徴とする請求項10に記載のコンピュ
ータシステム。 - 【請求項12】 前記UDRは、前記言語−特定仮想マ
シンによって翻訳されることを特徴とする請求項11に
記載のコンピュータシステム。 - 【請求項13】 前記UDRは、前記言語−特定仮想マ
シンによってコンパイルされかつ実行されることを特徴
とする請求項10に記載のコンピュータシステム。 - 【請求項14】 前記言語−特定仮想マシンは、Jav
a仮想マシンを備えていることを特徴とする請求項13
に記載のコンピュータシステム。 - 【請求項15】 ルーチン記述子(RDESC)構成、
ルーチンインスタンス(RINST)構成、言語記述子
(LDESC)構成及びモジュール記述子(MDES
C)構成を更に具備することを特徴とする請求項10に
記載のコンピュータシステム。 - 【請求項16】 前記言語管理プログラムを初期化し、
前記言語管理プログラムをローディングし、言語管理プ
ログラムコンテキストを生成し、かつ前記言語管理プロ
グラムを実行することができる汎用言語インタフェース
を更に具備することを特徴とする請求項10に記載のコ
ンピュータシステム。 - 【請求項17】 DBMS用コンピュータソフトウェア
であり、前記ソフトウェアは、コンピュータ読取り可能
媒体に存在しかつコンピュータに以下の動作を実行させ
るための命令を備えている:UDRに対してネイティブ
な言語を決定し;前記ネイティブ言語に関連する言語管
理プログラムが既にロードされているかどうかをチェッ
クしかつまだロードされていないならば、前記言語管理
プログラムをサーバメモリにロードし;前記UDRが既
にインスタンス生成されているかどうかをチェックしか
つまだインスタンス生成されていないならば、前記UD
Rをインスタンス生成しかつ初期化し;かつ前記UDR
に対する実行コンテキストを生成することを特徴とする
ソフトウェア。 - 【請求項18】 前記UDRを実行するための命令を更
に備えていることを特徴とする請求項17に記載のソフ
トウェア。 - 【請求項19】 前記UDRに対してネイティブな前記
言語を決定することにおいてシステムカタログを探索す
る命令を更に具備することを特徴とする請求項17に記
載のソフトウェア。 - 【請求項20】 ルーチン記述子(RDESC)構成、
ルーチンインスタンス(RINST)構成、言語記述子
(LDESC)構成及びモジュール記述子(MDES
C)構成を生成しかつ初期化する命令を更に備えている
ことを特徴とする請求項17に記載のソフトウェア。 - 【請求項21】 前記言語管理プログラムをローディン
グする命令は、前記言語管理プログラムを初期化し、前
記言語管理プログラムをローディングし、言語管理プロ
グラムコンテキストを生成し、かつ前記言語管理プログ
ラムを実行することができる汎用言語インタフェースを
供給する命令を更に備えていることを特徴とする請求項
17に記載のソフトウェア。 - 【請求項22】 ルーチン管理プログラムを用いて種々
の言語でUDRsを実行するための命令を更に備えてい
ることを特徴とする請求項17に記載のソフトウェア。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE29915058U DE29915058U1 (de) | 1998-08-27 | 1999-08-27 | Gurteinfügungs- bzw. -durchführungsteil |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/921,934 US5995974A (en) | 1997-08-27 | 1997-08-27 | Database server for handling a plurality of user defined routines (UDRs) expressed in a plurality of computer languages |
| US08/921934 | 1997-08-27 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH11134368A true JPH11134368A (ja) | 1999-05-21 |
Family
ID=25446214
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP10241180A Pending JPH11134368A (ja) | 1997-08-27 | 1998-08-27 | 言語管理プログラムインタフェース |
Country Status (6)
| Country | Link |
|---|---|
| US (2) | US5995974A (ja) |
| EP (1) | EP0899669A3 (ja) |
| JP (1) | JPH11134368A (ja) |
| AU (1) | AU757152B2 (ja) |
| BR (1) | BR9803768A (ja) |
| CA (1) | CA2245133A1 (ja) |
Families Citing this family (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6314429B1 (en) * | 1997-10-08 | 2001-11-06 | Mitel Corporation | Bi-directional conversion library |
| US6167565A (en) * | 1998-01-08 | 2000-12-26 | Microsoft Corporation | Method and system of custom marshaling of inter-language parameters |
| US20020016814A1 (en) * | 2000-08-07 | 2002-02-07 | International Business Machines Corporation | Method, system, and program for invoking stored procedures and accessing stored procedure data |
| US20020103633A1 (en) * | 2001-01-29 | 2002-08-01 | Bert Gasper | National language database for operating systems and method of using same |
| US7454746B2 (en) * | 2001-07-24 | 2008-11-18 | The Mathworks, Inc. | Function call translation |
| US20040006636A1 (en) * | 2002-04-19 | 2004-01-08 | Oesterreicher Richard T. | Optimized digital media delivery engine |
| US20040006635A1 (en) * | 2002-04-19 | 2004-01-08 | Oesterreicher Richard T. | Hybrid streaming platform |
| US7899924B2 (en) * | 2002-04-19 | 2011-03-01 | Oesterreicher Richard T | Flexible streaming hardware |
| US7293270B1 (en) * | 2002-11-19 | 2007-11-06 | International Business Machines Corporation | System and method for scheduling and coordinating tasks across application processes using shared memory |
| US7458072B2 (en) * | 2004-10-06 | 2008-11-25 | Microsoft Corporation | Execution context infrastructure |
| US8566252B2 (en) * | 2006-10-17 | 2013-10-22 | Benjamin L. Harding | Method and system for evaluating trustworthiness |
| US11461324B2 (en) | 2019-08-29 | 2022-10-04 | Oracle International Corporation | First futamura projection in the context of SQL expression evaluation |
| US11294894B2 (en) | 2019-08-30 | 2022-04-05 | Oracle International Corporation | Dynamic resolution of dependencies for database guest languages |
| US11531652B2 (en) * | 2019-08-30 | 2022-12-20 | Oracle International Corporation | Database modularization of pluggable guest languages |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5230049A (en) * | 1988-11-29 | 1993-07-20 | International Business Machines Corporation | Program source code translator |
| TW226047B (ja) * | 1990-03-27 | 1994-07-01 | Ibm | |
| US5257366A (en) * | 1990-03-27 | 1993-10-26 | International Business Machines Corporation | Query language execution on heterogeneous database servers using a bind-file bridge between application and database languages |
| IL100990A (en) * | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Multilanguage optimizing compiler using templates in multiple pass code generation |
| JP3055970B2 (ja) * | 1991-06-20 | 2000-06-26 | 富士通株式会社 | オブジェクト指向言語間インタフェース実現方法および装置 |
| US5442779A (en) * | 1992-06-25 | 1995-08-15 | International Business Machines Corporation | System and method for enabling an interpreted programming language to be executed in a database management system environment |
| US5680618A (en) * | 1993-05-26 | 1997-10-21 | Borland International, Inc. | Driver query and substitution for format independent native data access |
| JPH0863478A (ja) * | 1994-08-26 | 1996-03-08 | Toshiba Corp | 言語処理方法及び言語処理装置 |
| US5553234A (en) * | 1994-09-23 | 1996-09-03 | International Business Machines Corporation | System and method for including stored procedures, user-defined functions, and trigger processing in an existing unit of work |
| US5657447A (en) * | 1995-08-31 | 1997-08-12 | International Business Machines Corp. | Platform-transparent registration and build of stored procedures and user-defined functions |
| US5870562A (en) * | 1997-03-24 | 1999-02-09 | Pfn, Inc. | Universal domain routing and publication control system |
| US6006235A (en) * | 1997-11-26 | 1999-12-21 | International Business Machines Corporation | Method and apparatus for invoking a stored procedure or a user defined interpreted language function in a database management system |
-
1997
- 1997-08-27 US US08/921,934 patent/US5995974A/en not_active Expired - Fee Related
-
1998
- 1998-08-06 AU AU78795/98A patent/AU757152B2/en not_active Ceased
- 1998-08-12 CA CA002245133A patent/CA2245133A1/en not_active Abandoned
- 1998-08-26 BR BR9803768-4A patent/BR9803768A/pt not_active IP Right Cessation
- 1998-08-27 EP EP98306898A patent/EP0899669A3/en not_active Withdrawn
- 1998-08-27 JP JP10241180A patent/JPH11134368A/ja active Pending
-
1999
- 1999-06-25 US US09/344,748 patent/US6223179B1/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| EP0899669A2 (en) | 1999-03-03 |
| BR9803768A (pt) | 1999-11-09 |
| CA2245133A1 (en) | 1999-02-27 |
| EP0899669A3 (en) | 2005-12-07 |
| US5995974A (en) | 1999-11-30 |
| US6223179B1 (en) | 2001-04-24 |
| AU7879598A (en) | 1999-03-11 |
| AU757152B2 (en) | 2003-02-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6243709B1 (en) | Method and apparatus for loading stored procedures in a database corresponding to object-oriented data dependencies | |
| US8200658B2 (en) | System and method for providing highly available database performance | |
| US6163776A (en) | System and method for exchanging data and commands between an object oriented system and relational system | |
| JP3437849B2 (ja) | オブジェクト指向プログラミングを支援するデータベース管理システム及び方法 | |
| JPH08339319A (ja) | Sqlプログラムの高可用性コンパイレーションを有する方法及びリレーショナルデータベース・システム | |
| US6526457B1 (en) | Systems utility object interface for facilitating software portability | |
| Eastman | System facilities for CAD databases | |
| US20090248739A1 (en) | System and Method to Support Runtime Model Extension in an Object Relational Mapping (ORM) System | |
| CN1323416A (zh) | 模型效果分析 | |
| JPH11134368A (ja) | 言語管理プログラムインタフェース | |
| US6510551B1 (en) | System for expressing complex data relationships using simple language constructs | |
| US10684873B2 (en) | Efficient data decoding using runtime specialization | |
| Jones et al. | The OKS persistent in-memory object manager | |
| Morrison et al. | Persistent languages and architectures | |
| US11157491B2 (en) | Compilation framework for dynamic inlining | |
| US12373403B2 (en) | Shared cross-session dictionary using direct data access in a DBMS | |
| US20240176781A1 (en) | Speculative execution for regular expressions | |
| EP1040432B1 (en) | Method and apparatus for loading stored procedures in a database corresponding to object-oriented data dependencies | |
| CN120092232A (zh) | 通过部分求值重新编译现有c代码来产生经原生编译的查询计划 | |
| JPH02226472A (ja) | データベース・システムおよびデータベース・システムにおける関数式評価方法 | |
| US12164574B2 (en) | Regular expression matching in dictionary-encoded strings | |
| US20240126726A1 (en) | Techniques for comprehensively supporting json schema in a rdbms | |
| US20220179679A1 (en) | Compilation of expressions to employ software transactional memory concurrency control of an in-memory database | |
| Meeks | The Instrumentation of the Multibackend Database System | |
| MXPA98006738A (en) | Lengu administrator interface |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20040227 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050223 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080415 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20081028 |