JPH11338875A - 多重定義ルーチン解決方法及びその実施装置並びにその処理プログラムを記録した媒体 - Google Patents
多重定義ルーチン解決方法及びその実施装置並びにその処理プログラムを記録した媒体Info
- Publication number
- JPH11338875A JPH11338875A JP10145224A JP14522498A JPH11338875A JP H11338875 A JPH11338875 A JP H11338875A JP 10145224 A JP10145224 A JP 10145224A JP 14522498 A JP14522498 A JP 14522498A JP H11338875 A JPH11338875 A JP H11338875A
- Authority
- JP
- Japan
- Prior art keywords
- routine
- information
- type
- argument
- adt
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- 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/99932—Access augmentation or optimizing
-
- 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/99944—Object-oriented database structure
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【課題】 データベース問い合わせの解析時に行なう多
重定義ルーチン解決において、効率よく必要最小限の候
補を選択することが可能な技術を提供する。 【解決手段】 多重定義されたルーチン群の呼び出しを
解析して呼び出されるルーチンを決定する多重定義ルー
チン解決方法において、予め定められた優先度を基にル
ーチン群をソートするルーチン群ソートステップと、該
ソートされたルーチンから呼び出しの引数の定義上の型
に対して呼び出すことができるルーチンの中から引数の
データ型の優先度が最も高いルーチンを決定し、そのル
ーチンよりも優先度が低いルーチンを候補から外す基準
利用絞り込みステップと、上記基準利用絞り込みステッ
プによって残ったルーチン同士で引数のデータ型を比較
することで、呼び出される可能性のないルーチンを候補
から削除するソート特性絞り込みステップとを有するも
のである。
重定義ルーチン解決において、効率よく必要最小限の候
補を選択することが可能な技術を提供する。 【解決手段】 多重定義されたルーチン群の呼び出しを
解析して呼び出されるルーチンを決定する多重定義ルー
チン解決方法において、予め定められた優先度を基にル
ーチン群をソートするルーチン群ソートステップと、該
ソートされたルーチンから呼び出しの引数の定義上の型
に対して呼び出すことができるルーチンの中から引数の
データ型の優先度が最も高いルーチンを決定し、そのル
ーチンよりも優先度が低いルーチンを候補から外す基準
利用絞り込みステップと、上記基準利用絞り込みステッ
プによって残ったルーチン同士で引数のデータ型を比較
することで、呼び出される可能性のないルーチンを候補
から削除するソート特性絞り込みステップとを有するも
のである。
Description
【0001】
【発明の属する技術分野】本発明は多重定義されたルー
チンの呼び出しを解決するデータベースシステムに関
し、特に多重定義ルーチンの機能を有し、多重定義され
たルーチン群の呼び出しを解析して呼び出されるルーチ
ンを決定するデータベースシステムに適用して有効な技
術に関するものである。
チンの呼び出しを解決するデータベースシステムに関
し、特に多重定義ルーチンの機能を有し、多重定義され
たルーチン群の呼び出しを解析して呼び出されるルーチ
ンを決定するデータベースシステムに適用して有効な技
術に関するものである。
【0002】
【従来の技術】データベースで様々な構造を持つデータ
を扱いたいというユーザの要望に対して、オブジェクト
データベースの研究、開発が行われる一方で、リレーシ
ョナルデータベースにオブジェクト指向の概念を取り入
れる試みが行われており、この標準化が次期SQL(Struct
ured Query Language)として進められている。
を扱いたいというユーザの要望に対して、オブジェクト
データベースの研究、開発が行われる一方で、リレーシ
ョナルデータベースにオブジェクト指向の概念を取り入
れる試みが行われており、この標準化が次期SQL(Struct
ured Query Language)として進められている。
【0003】次期SQLでは、様々な構造を持つデータを
扱うために、抽象データ型というユーザ定義のデータ型
を導入している。また、それらのデータに対する操作を
関数や手続き(以下、ルーチンと記す)によって実現可能
とし、それらのルーチンに対する多重定義の機能を提供
している。
扱うために、抽象データ型というユーザ定義のデータ型
を導入している。また、それらのデータに対する操作を
関数や手続き(以下、ルーチンと記す)によって実現可能
とし、それらのルーチンに対する多重定義の機能を提供
している。
【0004】以下、データベース問い合わせ言語として
SQLを例に説明するが、抽象データ型と多重定義に類す
る機能を持つその他のデータベース問い合わせ言語であ
っても同様である。
SQLを例に説明するが、抽象データ型と多重定義に類す
る機能を持つその他のデータベース問い合わせ言語であ
っても同様である。
【0005】まず、本発明に関する従来技術として、多
重定義と次期SQLの抽象データ型について説明する。最
初に多重定義について説明する。同一の名称を持ち、引
数の個数やデータ型が異なるルーチンを複数定義するこ
とは多重定義と呼ばれる(以下、引数とはルーチン呼び
出し側の引数のことを示し、またパラメタとは呼び出さ
れるルーチン側の引数のことを示すものとする)。デー
タベースシステムはルーチン呼び出しに対して、多重定
義されたルーチンの中からパラメタの個数、データ型の
いずれにおいても最適であるルーチンを選択、適用す
る。
重定義と次期SQLの抽象データ型について説明する。最
初に多重定義について説明する。同一の名称を持ち、引
数の個数やデータ型が異なるルーチンを複数定義するこ
とは多重定義と呼ばれる(以下、引数とはルーチン呼び
出し側の引数のことを示し、またパラメタとは呼び出さ
れるルーチン側の引数のことを示すものとする)。デー
タベースシステムはルーチン呼び出しに対して、多重定
義されたルーチンの中からパラメタの個数、データ型の
いずれにおいても最適であるルーチンを選択、適用す
る。
【0006】データベース問い合わせ言語SQLから発展
したSQL/PSMでは、関数とその多重定義の機能をSQLに取
り入れている。SQL/PSMについては、ISO/IEC 9075-4:19
96,”Information technology Database languages SQL
Part 4: Persistent StoredModules (SQL/PSM)”など
に記載されている。このSQL/PSMの関数の多重定義につ
いて例を用いて説明する。
したSQL/PSMでは、関数とその多重定義の機能をSQLに取
り入れている。SQL/PSMについては、ISO/IEC 9075-4:19
96,”Information technology Database languages SQL
Part 4: Persistent StoredModules (SQL/PSM)”など
に記載されている。このSQL/PSMの関数の多重定義につ
いて例を用いて説明する。
【0007】図17は従来の多重定義された関数を呼び
出しているSQL文の例を示す図である。この例101では、
数値型を引数として取り、その値を文字列に変換して返
す関数numeric_stringを呼び出している。関数の定義を
102に示す。ここで定義された関数103はINTEGER型(整数
型)を引数に取り、また関数104はFLOAT型(概数型)を引
数に取ることを示す。これらの関数は実際にはCREATE F
UNCTIONなどの関数定義のためのステートメント文によ
って定義される。
出しているSQL文の例を示す図である。この例101では、
数値型を引数として取り、その値を文字列に変換して返
す関数numeric_stringを呼び出している。関数の定義を
102に示す。ここで定義された関数103はINTEGER型(整数
型)を引数に取り、また関数104はFLOAT型(概数型)を引
数に取ることを示す。これらの関数は実際にはCREATE F
UNCTIONなどの関数定義のためのステートメント文によ
って定義される。
【0008】SQL文105によって、変数xはINTEGER型、変
数yはDECIMAL型(10進整数)として宣言されている。SQL
文106では、INTEGER型の変数xを引数として関数numeric
_stringを呼び出している。これに対しては、引数のデ
ータ型がINTEGER型であるから、INTEGER型を引数に取る
関数103が適用される。
数yはDECIMAL型(10進整数)として宣言されている。SQL
文106では、INTEGER型の変数xを引数として関数numeric
_stringを呼び出している。これに対しては、引数のデ
ータ型がINTEGER型であるから、INTEGER型を引数に取る
関数103が適用される。
【0009】一方、SQL文107では、DECIMAL型の変数yを
引数として関数numeric_stringを呼び出している。関数
の定義102にはDECIMAL型を引数に取る関数numeric_stri
ngが定義されていないので、数値型のデータ型優先度リ
スト108上でDECIMAL型よりも優先度が低く、データ型優
先度リスト108上で最も優先度が高いデータ型であるFLO
AT型を引数に取る関数104が適用される。
引数として関数numeric_stringを呼び出している。関数
の定義102にはDECIMAL型を引数に取る関数numeric_stri
ngが定義されていないので、数値型のデータ型優先度リ
スト108上でDECIMAL型よりも優先度が低く、データ型優
先度リスト108上で最も優先度が高いデータ型であるFLO
AT型を引数に取る関数104が適用される。
【0010】ここで、データ型優先度リスト108は、ル
ーチン呼び出しの引数に指定された数値型のデータ型に
対して適用できるデータ型を優先度順に左から右に並べ
たものである。例えばデータ型優先度リスト108におい
て、ルーチン呼び出しの引数のデータ型がDECIMAL型で
あった時、DECIMAL型とFLOAT型をパラメタに持つルーチ
ンが適用でき、さらにDECIMAL型の方が先に記述されて
いるのでDECIMAL型をパラメタに持つルーチンが適用さ
れる。引数の個数やルーチンの名称などが一致しても、
データ型優先度リスト108上にないデータ型をパラメタ
に持つルーチンや、引数に指定されたデータ型よりも優
先度の高いデータ型をパラメタに持つルーチンは適用さ
れない。
ーチン呼び出しの引数に指定された数値型のデータ型に
対して適用できるデータ型を優先度順に左から右に並べ
たものである。例えばデータ型優先度リスト108におい
て、ルーチン呼び出しの引数のデータ型がDECIMAL型で
あった時、DECIMAL型とFLOAT型をパラメタに持つルーチ
ンが適用でき、さらにDECIMAL型の方が先に記述されて
いるのでDECIMAL型をパラメタに持つルーチンが適用さ
れる。引数の個数やルーチンの名称などが一致しても、
データ型優先度リスト108上にないデータ型をパラメタ
に持つルーチンや、引数に指定されたデータ型よりも優
先度の高いデータ型をパラメタに持つルーチンは適用さ
れない。
【0011】このように、多重定義されたルーチンの中
からルーチン呼び出しの引数のデータ型に最も適するデ
ータ型をパラメタに持つルーチンが適用される。この適
用ルーチンの決定のことを、多重定義ルーチンの解決と
いう。
からルーチン呼び出しの引数のデータ型に最も適するデ
ータ型をパラメタに持つルーチンが適用される。この適
用ルーチンの決定のことを、多重定義ルーチンの解決と
いう。
【0012】データ型優先度リスト108におけるデータ
型の優先度はデータベースシステムが問い合わせの解析
を行なう上で使用する基準であり、本例ではINTEGER
型、DECIMAL型、FLOAT型の順に優先度を定めているが、
特にこの優先度順でなくとも、データ型の間に規則的な
優先度が定められていれば、それをデータ型優先度リス
ト108の優先度とすることができる。
型の優先度はデータベースシステムが問い合わせの解析
を行なう上で使用する基準であり、本例ではINTEGER
型、DECIMAL型、FLOAT型の順に優先度を定めているが、
特にこの優先度順でなくとも、データ型の間に規則的な
優先度が定められていれば、それをデータ型優先度リス
ト108の優先度とすることができる。
【0013】次に次期SQLの抽象データ型(Abstract Dat
a Type、以下ADTと略記す)について説明する。ADTはオ
ブジェクト指向におけるクラスに相当し、継承の概念を
持つユーザが定義できるデータ型である。あるADTに対
してそのサブクラスといえるサブタイプのデータ型を定
義することが可能である。サブタイプのデータ型から見
てその上位データ型をスーパータイプという。サブタイ
プのデータ型はスーパータイプのデータ型の属性を継承
し、ADTで定義された変数(以下、ADT変数と記す)に対し
てADT変数を定義したデータ型とそのサブタイプのデー
タ型を代入することが可能である。この場合の代入は、
通常のデータ型の代入と異なり、代入元のデータ型を代
入先のデータ型に型変換するのではなく、代入先のデー
タ型を代入元のデータ型に適用する。
a Type、以下ADTと略記す)について説明する。ADTはオ
ブジェクト指向におけるクラスに相当し、継承の概念を
持つユーザが定義できるデータ型である。あるADTに対
してそのサブクラスといえるサブタイプのデータ型を定
義することが可能である。サブタイプのデータ型から見
てその上位データ型をスーパータイプという。サブタイ
プのデータ型はスーパータイプのデータ型の属性を継承
し、ADTで定義された変数(以下、ADT変数と記す)に対し
てADT変数を定義したデータ型とそのサブタイプのデー
タ型を代入することが可能である。この場合の代入は、
通常のデータ型の代入と異なり、代入元のデータ型を代
入先のデータ型に型変換するのではなく、代入先のデー
タ型を代入元のデータ型に適用する。
【0014】一方、ADT変数に対して、そのスーパータ
イプのデータ型を代入することはできない。したがっ
て、サブタイプを持つADTで定義された変数について
は、SQL解析時にデータ型を特定できず、SQL実行時に初
めてそのデータ型を知ることが可能となる。これはADT
で定義された変数だけでなく、ADTで定義された列につ
いても同様である。
イプのデータ型を代入することはできない。したがっ
て、サブタイプを持つADTで定義された変数について
は、SQL解析時にデータ型を特定できず、SQL実行時に初
めてそのデータ型を知ることが可能となる。これはADT
で定義された変数だけでなく、ADTで定義された列につ
いても同様である。
【0015】なお次期SQLとADTに関してはAndrew E. Wa
de, Ph.D. :”Object Query Standards”, ACM SIGMOD
Record, Vol.25, No.1, pp.87-92, March 1996などに記
載されている。また次期SQL標準化のDraftは、ISO/IEC
JTC1/SC21/WG3 DBL-MCI-004,ISO Working Draft Databa
se Language SQL, 1996に記載されている。
de, Ph.D. :”Object Query Standards”, ACM SIGMOD
Record, Vol.25, No.1, pp.87-92, March 1996などに記
載されている。また次期SQL標準化のDraftは、ISO/IEC
JTC1/SC21/WG3 DBL-MCI-004,ISO Working Draft Databa
se Language SQL, 1996に記載されている。
【0016】次期SQLに示されたADTを引数に取るルーチ
ンが多重定義された場合の解決方法について図を用いて
説明する。図18は従来のADTを引数に取る多重定義さ
れた関数の呼び出しを行なっているSQL文の例を示す図
である。例201では、ADTで定義されたmoney型に属するA
DTを引数として受け取り、dollar型で換算した結果を返
す関数dollar_amountを呼び出している。
ンが多重定義された場合の解決方法について図を用いて
説明する。図18は従来のADTを引数に取る多重定義さ
れた関数の呼び出しを行なっているSQL文の例を示す図
である。例201では、ADTで定義されたmoney型に属するA
DTを引数として受け取り、dollar型で換算した結果を返
す関数dollar_amountを呼び出している。
【0017】抽象データ型継承関係202に、ADTであるmo
ney型とそのサブタイプとして、yen型とdollar型とmark
型が定義されている例を示す。特に図に示さないが、こ
れらのADTとその継承関係はCREATE TYPEなどのデータ型
定義文によって定義される。関数の定義を203に示す。
関数204はADTであるyen型を引数に取り、関数205はADT
であるmoney型を引数に取ることを示す。
ney型とそのサブタイプとして、yen型とdollar型とmark
型が定義されている例を示す。特に図に示さないが、こ
れらのADTとその継承関係はCREATE TYPEなどのデータ型
定義文によって定義される。関数の定義を203に示す。
関数204はADTであるyen型を引数に取り、関数205はADT
であるmoney型を引数に取ることを示す。
【0018】以下、本例に従って具体的に説明する。SQ
L文206では、変数xをADTであるmoney型で宣言してい
る。これによって変数xには、そのサブタイプのyen型や
dollar型やmark型を代入することが可能である。
L文206では、変数xをADTであるmoney型で宣言してい
る。これによって変数xには、そのサブタイプのyen型や
dollar型やmark型を代入することが可能である。
【0019】SQL文207では、変数xに関数yenの戻り値を
代入しており、これは変数xにyen型が代入されることを
示す。SQL文208は変数xを引数として、関数dollar_amou
ntを呼び出している。この時の引数xのデータ型はyen型
であるから、yen型をパラメタに持つ関数204が適用され
る。
代入しており、これは変数xにyen型が代入されることを
示す。SQL文208は変数xを引数として、関数dollar_amou
ntを呼び出している。この時の引数xのデータ型はyen型
であるから、yen型をパラメタに持つ関数204が適用され
る。
【0020】SQL文209では、変数xに関数dollar()の戻
り値型を代入しており、これは変数xにdollar型が代入
されていることを示す。SQL文210は変数xを引数とし
て、関数dollar_amountを呼び出している。この時の引
数xのデータ型はdollar型であるが、定義表203には、do
llar型を引数に取る関数が定義されていない。
り値型を代入しており、これは変数xにdollar型が代入
されていることを示す。SQL文210は変数xを引数とし
て、関数dollar_amountを呼び出している。この時の引
数xのデータ型はdollar型であるが、定義表203には、do
llar型を引数に取る関数が定義されていない。
【0021】そこで、dollar型のデータ型優先度リスト
211上で、dollar型の次に優先度の高いmoney型を引数に
取る関数205が適用される。money型にはそのサブタイプ
であるdollar型が代入可能であるため、money型をパラ
メタに持つ関数205も適用可能だからである。上記の方
法によって引数にADTが指定された場合のルーチン呼び
出しに対して多重定義されたルーチンの中から最適なル
ーチンを適用する。
211上で、dollar型の次に優先度の高いmoney型を引数に
取る関数205が適用される。money型にはそのサブタイプ
であるdollar型が代入可能であるため、money型をパラ
メタに持つ関数205も適用可能だからである。上記の方
法によって引数にADTが指定された場合のルーチン呼び
出しに対して多重定義されたルーチンの中から最適なル
ーチンを適用する。
【0022】dollar型のデータ型優先度リスト211は、d
ollar型が代入できるADTであるdollar型とそのスーパー
タイプの優先順位を示す。次期SQLにおいては、単一継
承の場合、あるADTのデータ型優先度リストは、そのデ
ータ型自身が最優先で、次にそのスーパータイプ、さら
にその次にはそのスーパータイプ...、というように優
先順位が決定される。なお本例では、一つのADTがただ
一つ直接のスーパータイプを持つことができる単一継承
の場合について説明する。
ollar型が代入できるADTであるdollar型とそのスーパー
タイプの優先順位を示す。次期SQLにおいては、単一継
承の場合、あるADTのデータ型優先度リストは、そのデ
ータ型自身が最優先で、次にそのスーパータイプ、さら
にその次にはそのスーパータイプ...、というように優
先順位が決定される。なお本例では、一つのADTがただ
一つ直接のスーパータイプを持つことができる単一継承
の場合について説明する。
【0023】多重定義されるルーチンの引数の個数は複
数取ることもできる。同様にADTの引数を複数取るルー
チンの多重定義も可能である。ADTとADTでないデータ型
を引数に取る関数が多重定義された場合について、図を
用いて説明する。
数取ることもできる。同様にADTの引数を複数取るルー
チンの多重定義も可能である。ADTとADTでないデータ型
を引数に取る関数が多重定義された場合について、図を
用いて説明する。
【0024】図19は従来のADTとADT以外のデータ型を
引数に取る関数が多重定義されている場合の関数呼び出
しの例を示す図である。301は不動産の売却情報を返す
関数sale_infoを呼び出すSQL文の例である。SQL文302で
は、関数sale_infoの引数に指定する変数を宣言してお
り、変数priceはADTであるmoney型、変数sizeはINTEGER
型(整数型)、変数propertyはADTであるhouse型で宣言し
ている。
引数に取る関数が多重定義されている場合の関数呼び出
しの例を示す図である。301は不動産の売却情報を返す
関数sale_infoを呼び出すSQL文の例である。SQL文302で
は、関数sale_infoの引数に指定する変数を宣言してお
り、変数priceはADTであるmoney型、変数sizeはINTEGER
型(整数型)、変数propertyはADTであるhouse型で宣言し
ている。
【0025】各ADTの継承関係を、抽象データ型の継承
関係303と304に示す。継承関係303は、real_estate型の
サブタイプとしてhouse型があること、さらにhouse型の
サブタイプとしてlodge型とvilla型があることを示して
いる。また継承関係304は、money型のサブタイプとして
yen型、dollar型、mark型があることを示す。
関係303と304に示す。継承関係303は、real_estate型の
サブタイプとしてhouse型があること、さらにhouse型の
サブタイプとしてlodge型とvilla型があることを示して
いる。また継承関係304は、money型のサブタイプとして
yen型、dollar型、mark型があることを示す。
【0026】SQL文305では、変数price、size、propert
yを引数として関数sale_infoを呼び出している。ADTで
定義された変数にはそのサブタイプが代入可能であるか
ら、money型の変数priceには、money型とそのサブタイ
プであるyen型、dollar型、mark型の4つのデータ型が
代入可能である。同様にhouse型の変数propertyにはhou
se型とそのサブタイプであるlodge型、villa型の3つの
データ型が代入可能である。変数sizeはその他の数値型
が代入されてもINTEGER型から変わることはない。
yを引数として関数sale_infoを呼び出している。ADTで
定義された変数にはそのサブタイプが代入可能であるか
ら、money型の変数priceには、money型とそのサブタイ
プであるyen型、dollar型、mark型の4つのデータ型が
代入可能である。同様にhouse型の変数propertyにはhou
se型とそのサブタイプであるlodge型、villa型の3つの
データ型が代入可能である。変数sizeはその他の数値型
が代入されてもINTEGER型から変わることはない。
【0027】したがって本例の場合、表306に示すとお
り、4×3=12通りの引数のデータ型が考えられる。この1
2通りの引数のデータ型の組み合わせに対して、関数308
〜312の中からそれぞれ適用する関数を決定することに
なる。
り、4×3=12通りの引数のデータ型が考えられる。この1
2通りの引数のデータ型の組み合わせに対して、関数308
〜312の中からそれぞれ適用する関数を決定することに
なる。
【0028】次期SQLでは、このような多重定義ルーチ
ンの解決に関して、引数の左から右の順で優先度を定め
ている。図19の例において、関数sale_infoの引数の
データ型が左からyen型、INTEGER型、lodge型であると
すると、それぞれの引数のデータ型が代入できる関数は
308、311、312である。この3つの関数のパラメタを左か
ら比較すると、第一引数のデータ型であるyen型に対し
て、同じくyen型をパラメタに取る関数308が適用され
る。
ンの解決に関して、引数の左から右の順で優先度を定め
ている。図19の例において、関数sale_infoの引数の
データ型が左からyen型、INTEGER型、lodge型であると
すると、それぞれの引数のデータ型が代入できる関数は
308、311、312である。この3つの関数のパラメタを左か
ら比較すると、第一引数のデータ型であるyen型に対し
て、同じくyen型をパラメタに取る関数308が適用され
る。
【0029】このように、表306に示したADTの引数の組
み合わせに対して関数308〜312の中から適用すべき最適
な関数を一つずつ決定すると、それぞれ矢印で示した関
数が適用される。この例では、引数である変数price、p
ropertyに代入されるデータ型に応じて関数308、309、3
11のいずれかが適用され、一方、変数price、property
にどのようなデータ型が代入されても関数310、312が適
用されることはない。
み合わせに対して関数308〜312の中から適用すべき最適
な関数を一つずつ決定すると、それぞれ矢印で示した関
数が適用される。この例では、引数である変数price、p
ropertyに代入されるデータ型に応じて関数308、309、3
11のいずれかが適用され、一方、変数price、property
にどのようなデータ型が代入されても関数310、312が適
用されることはない。
【0030】この例では、次期SQLの多重定義ルーチン
の解決方法に従って引数の左から右の順の優先度を用い
ているが、特定の優先順序があっても同様に引数が複数
の場合の多重定義ルーチンの解決を行なうことが可能で
ある。
の解決方法に従って引数の左から右の順の優先度を用い
ているが、特定の優先順序があっても同様に引数が複数
の場合の多重定義ルーチンの解決を行なうことが可能で
ある。
【0031】
【発明が解決しようとする課題】データベースシステム
では、データベースに対する問い合わせに対して、構文
の解析、意味の解析を行なって問い合わせ解析結果を作
成し、その問い合わせ解析結果を基に問い合わせに対す
る要求を処理する。
では、データベースに対する問い合わせに対して、構文
の解析、意味の解析を行なって問い合わせ解析結果を作
成し、その問い合わせ解析結果を基に問い合わせに対す
る要求を処理する。
【0032】ADTを引数とするルーチンの呼び出しの機
能をデータベースに取り入れる場合、継承関係にある他
のデータの代用が可能であるという性質から、データベ
ース問い合わせの解析時だけで多重定義の解決を行なう
ことができない。
能をデータベースに取り入れる場合、継承関係にある他
のデータの代用が可能であるという性質から、データベ
ース問い合わせの解析時だけで多重定義の解決を行なう
ことができない。
【0033】しかし、データベース問い合わせに対する
実行処理時に、多重定義ルーチンの解決を行なうとする
と、一つのルーチン呼び出しごとに、ルーチンの定義情
報の取得から最適なルーチンの決定を行なう必要がある
ため、その処理時間の点から実用的でない。
実行処理時に、多重定義ルーチンの解決を行なうとする
と、一つのルーチン呼び出しごとに、ルーチンの定義情
報の取得から最適なルーチンの決定を行なう必要がある
ため、その処理時間の点から実用的でない。
【0034】例えば、データベースの検索条件に多重定
義された関数が記述された場合、1件ごとにルーチンの
定義情報の取得と多重定義の解決を行なっていたので
は、データベースに格納される数万件のデータに対して
膨大な処理時間を要してしまう。
義された関数が記述された場合、1件ごとにルーチンの
定義情報の取得と多重定義の解決を行なっていたので
は、データベースに格納される数万件のデータに対して
膨大な処理時間を要してしまう。
【0035】そこで、データベース問い合わせの解析時
に多重定義されたルーチンに対してあらかじめ候補を絞
っておき、その結果を基にデータベース問い合わせの実
行処理で解決することが考えられる。
に多重定義されたルーチンに対してあらかじめ候補を絞
っておき、その結果を基にデータベース問い合わせの実
行処理で解決することが考えられる。
【0036】データベース問い合わせの解析時に候補を
絞る場合、図19の例のように、ADTの引数に入り得る
あらゆるデータ型の組み合わせを調べることで必要最小
限の候補を決定することができる。
絞る場合、図19の例のように、ADTの引数に入り得る
あらゆるデータ型の組み合わせを調べることで必要最小
限の候補を決定することができる。
【0037】しかし、上述した従来技術を用いたので
は、図19の例でも各ADT引数のサブタイプ数の積であ
る4×3=12通りの引数の組み合わせに対して、それぞれ
適用するルーチンを決定しなければならず、処理負荷が
大きい。さらにADTの継承関係の数、またはADT引数の数
が多くなると、引数が取りうるデータ型の組み合わせ数
が爆発的に多くなってしまい、多重定義されたルーチン
の個数が少ない場合でも、その組み合わせ数だけ適用さ
れるルーチンの決定処理を行なわなければならなくな
る。その結果、膨大な処理時間を要することとなり、デ
ータベースとして実用的な性能を実現できなくなる。
は、図19の例でも各ADT引数のサブタイプ数の積であ
る4×3=12通りの引数の組み合わせに対して、それぞれ
適用するルーチンを決定しなければならず、処理負荷が
大きい。さらにADTの継承関係の数、またはADT引数の数
が多くなると、引数が取りうるデータ型の組み合わせ数
が爆発的に多くなってしまい、多重定義されたルーチン
の個数が少ない場合でも、その組み合わせ数だけ適用さ
れるルーチンの決定処理を行なわなければならなくな
る。その結果、膨大な処理時間を要することとなり、デ
ータベースとして実用的な性能を実現できなくなる。
【0038】本発明の目的は上記問題を解決し、データ
ベース問い合わせの解析時に行なう多重定義ルーチン解
決のための候補の絞り込み処理において、少ない処理量
で候補を絞り込み、効率よく必要最小限の候補を選択す
ることが可能な技術を提供することにある。
ベース問い合わせの解析時に行なう多重定義ルーチン解
決のための候補の絞り込み処理において、少ない処理量
で候補を絞り込み、効率よく必要最小限の候補を選択す
ることが可能な技術を提供することにある。
【0039】
【課題を解決するための手段】前記課題を解決するため
に、本発明ではデータベース問い合わせ解析処理におい
て、次のステップを備えることで、多重定義ルーチンの
呼び出しに対して、効率よく候補ルーチンを絞り込み、
さらに適用するルーチンを決定する。
に、本発明ではデータベース問い合わせ解析処理におい
て、次のステップを備えることで、多重定義ルーチンの
呼び出しに対して、効率よく候補ルーチンを絞り込み、
さらに適用するルーチンを決定する。
【0040】(1) ルーチン呼び出しに対して、引数の個
数、ルーチン名称が一致するルーチンの定義情報を取得
し、その取得したルーチン群をパラメタをキーとしてそ
の優先度順にソートするルーチン群ソートステップ。こ
こで、データ型の優先度は、数値型は型優先度リスト、
ADTは継承した世代数すなわちスーパータイプの数が大
きいものを優先とする。なお、図19の例中の関数308
〜312はこのソート順に並べてある。
数、ルーチン名称が一致するルーチンの定義情報を取得
し、その取得したルーチン群をパラメタをキーとしてそ
の優先度順にソートするルーチン群ソートステップ。こ
こで、データ型の優先度は、数値型は型優先度リスト、
ADTは継承した世代数すなわちスーパータイプの数が大
きいものを優先とする。なお、図19の例中の関数308
〜312はこのソート順に並べてある。
【0041】(2) 上記ルーチン群ソートステップによっ
て得られたソート済みのルーチン群に対して、引数のAD
Tの実際のデータ型ではなく定義上のデータ型に対して
適用されるルーチン(以下、基準ルーチンと記す)をソー
ト済みルーチン群の先頭から検索し、ソート順で基準ル
ーチンより優先度が低いADT引数にどのデータ型が代入
されても適用されることはないルーチンを候補から削除
する基準利用絞り込みステップ。
て得られたソート済みのルーチン群に対して、引数のAD
Tの実際のデータ型ではなく定義上のデータ型に対して
適用されるルーチン(以下、基準ルーチンと記す)をソー
ト済みルーチン群の先頭から検索し、ソート順で基準ル
ーチンより優先度が低いADT引数にどのデータ型が代入
されても適用されることはないルーチンを候補から削除
する基準利用絞り込みステップ。
【0042】図19の例では、このステップによって関
数312が候補から削除される。しかし、関数310のよう
に、ソート順で基準ルーチン以前のルーチンであり、か
つ実際に適用されないものがまだ候補として残ってい
る。
数312が候補から削除される。しかし、関数310のよう
に、ソート順で基準ルーチン以前のルーチンであり、か
つ実際に適用されないものがまだ候補として残ってい
る。
【0043】(3) 上記基準利用絞り込みステップでの絞
り込み処理で残ったソート済みルーチン群において、任
意の2つルーチンをソートの優先度順にルーチンAとルー
チンBとすると、ルーチンBのパラメタに代入可能な全て
のデータ型がルーチンAのパラメタに対しても代入可能
であれば、そのようなルーチンBを削除するソート特性
絞り込みステップ。
り込み処理で残ったソート済みルーチン群において、任
意の2つルーチンをソートの優先度順にルーチンAとルー
チンBとすると、ルーチンBのパラメタに代入可能な全て
のデータ型がルーチンAのパラメタに対しても代入可能
であれば、そのようなルーチンBを削除するソート特性
絞り込みステップ。
【0044】これは、ソート済みのルーチン群の中にお
いて、ある引数のデータ型に対して起動することができ
るルーチンが複数存在すれば、ソート順で最優先される
ルーチンが適用される、という性質を利用したものであ
る。
いて、ある引数のデータ型に対して起動することができ
るルーチンが複数存在すれば、ソート順で最優先される
ルーチンが適用される、という性質を利用したものであ
る。
【0045】図19の例では、関数310のパラメタに代
入できるデータ型は、同様に関数309のパラメタにも代
入可能であるから、関数310は起動される可能性がない
ため、候補から削除される。
入できるデータ型は、同様に関数309のパラメタにも代
入可能であるから、関数310は起動される可能性がない
ため、候補から削除される。
【0046】(4) 上記ソート特性絞り込みステップでの
処理で得られたソート済み候補ルーチン群の先頭から、
実際の引き数のデータ型に対して適用できるルーチンを
探し、最初に見つかったルーチンを適用する適用ルーチ
ン決定ステップ。
処理で得られたソート済み候補ルーチン群の先頭から、
実際の引き数のデータ型に対して適用できるルーチンを
探し、最初に見つかったルーチンを適用する適用ルーチ
ン決定ステップ。
【0047】以上の様に本発明のデータベースシステム
によれば、多重定義ルーチンの呼び出しを含むデータベ
ース問い合わせを解析する際に、適用される可能性を持
つルーチンをルーチン同士のパラメタの比較によって決
定するので、データベース問い合わせの解析時に行なう
多重定義ルーチン解決のための候補の絞り込み処理にお
いて、少ない処理量で候補を絞り込み、効率よく必要最
小限の候補を選択することが可能である。
によれば、多重定義ルーチンの呼び出しを含むデータベ
ース問い合わせを解析する際に、適用される可能性を持
つルーチンをルーチン同士のパラメタの比較によって決
定するので、データベース問い合わせの解析時に行なう
多重定義ルーチン解決のための候補の絞り込み処理にお
いて、少ない処理量で候補を絞り込み、効率よく必要最
小限の候補を選択することが可能である。
【0048】
【発明の実施の形態】以下に多重定義されたルーチン群
の呼び出しを解析して呼び出されるルーチンを決定する
一実施形態のデータベースシステムについて説明する。
の呼び出しを解析して呼び出されるルーチンを決定する
一実施形態のデータベースシステムについて説明する。
【0049】図1は本実施形態のデータベースシステム
の概略構成を示す図である。本システムはデータベース
への問い合わせを行なうユーザアプリケーションプログ
ラム402(以下、UAPと略記する)を管理するクライアント
401と、データベースへの問い合わせ要求に対して処理
を行なうデータベースサーバ404から構成される。クラ
イアント401とデータベースサーバ404は高速ネットワー
ク400で繋がっているものとする。
の概略構成を示す図である。本システムはデータベース
への問い合わせを行なうユーザアプリケーションプログ
ラム402(以下、UAPと略記する)を管理するクライアント
401と、データベースへの問い合わせ要求に対して処理
を行なうデータベースサーバ404から構成される。クラ
イアント401とデータベースサーバ404は高速ネットワー
ク400で繋がっているものとする。
【0050】クライアント401上のUAP402からのデータ
ベースに対する問い合わせ403は、データベースサーバ4
04に送られる。データベースサーバ404に送られてきた
データベースへの問い合わせ403は、SQL解析処理部405
によって解析され、SQL解析結果コード414が生成され
る。SQL実行処理部416はこのSQL解析結果コード414が示
す内容に従って、データベースに対する問い合わせ403
が示す要求を実行する。
ベースに対する問い合わせ403は、データベースサーバ4
04に送られる。データベースサーバ404に送られてきた
データベースへの問い合わせ403は、SQL解析処理部405
によって解析され、SQL解析結果コード414が生成され
る。SQL実行処理部416はこのSQL解析結果コード414が示
す内容に従って、データベースに対する問い合わせ403
が示す要求を実行する。
【0051】SQL解析処理部405は、構文解析処理406、
意味解析処理407、SQL解析結果コード生成処理408及び
候補ルーチン絞り込み処理410から構成される。構文解
析処理406では、データベース問い合わせ言語の構文を
解析する。意味解析処理407では、構文解析処理406で得
られた構文の解析結果を基に、データベースへの問い合
わせ403が示す内容を意味的に解析する。その際に、デ
ータベース問い合わせ403中にルーチンの呼び出しが含
まれていれば、ルーチン呼び出し情報409を作成して、
候補ルーチン絞り込み処理410を呼び出す。
意味解析処理407、SQL解析結果コード生成処理408及び
候補ルーチン絞り込み処理410から構成される。構文解
析処理406では、データベース問い合わせ言語の構文を
解析する。意味解析処理407では、構文解析処理406で得
られた構文の解析結果を基に、データベースへの問い合
わせ403が示す内容を意味的に解析する。その際に、デ
ータベース問い合わせ403中にルーチンの呼び出しが含
まれていれば、ルーチン呼び出し情報409を作成して、
候補ルーチン絞り込み処理410を呼び出す。
【0052】候補ルーチン絞り込み処理410では、ルー
チン呼び出し情報409を基に、ディクショナリ情報411か
らルーチン定義情報412を取得し、ルーチン呼び出しの
候補となるソート済み候補ルーチン情報413を作成す
る。この候補ルーチン絞り込み処理410によって、多重
定義されたルーチンの中からルーチン呼び出しに対して
候補となる必要最小限のルーチンを決定する。ソート済
み候補ルーチン情報413はルーチン呼び出しに関する意
味解析の結果として、意味解析処理407へ渡される。
チン呼び出し情報409を基に、ディクショナリ情報411か
らルーチン定義情報412を取得し、ルーチン呼び出しの
候補となるソート済み候補ルーチン情報413を作成す
る。この候補ルーチン絞り込み処理410によって、多重
定義されたルーチンの中からルーチン呼び出しに対して
候補となる必要最小限のルーチンを決定する。ソート済
み候補ルーチン情報413はルーチン呼び出しに関する意
味解析の結果として、意味解析処理407へ渡される。
【0053】SQL解析結果コード生成処理408では、意味
解析処理407によって得られたデータベースへの問い合
わせ403の解析結果からSQL解析結果コード414を作成す
る。問い合わせ403中にルーチンの呼び出しが含まれて
いれば、ソート済み候補ルーチン情報413を解析結果コ
ード形式にした結果コード形式候補ルーチン情報415がS
QL解析結果コード414中に含まれる。なお、SQL解析結果
コード414は実行形式のコードであっても、インタプリ
タ用のコードのどちらであってもよい。
解析処理407によって得られたデータベースへの問い合
わせ403の解析結果からSQL解析結果コード414を作成す
る。問い合わせ403中にルーチンの呼び出しが含まれて
いれば、ソート済み候補ルーチン情報413を解析結果コ
ード形式にした結果コード形式候補ルーチン情報415がS
QL解析結果コード414中に含まれる。なお、SQL解析結果
コード414は実行形式のコードであっても、インタプリ
タ用のコードのどちらであってもよい。
【0054】SQL実行処理部416中の実行処理417では、S
QL解析処理部405によって生成されたSQL解析結果コード
414が示す内容に従ってデータベースに対する操作を行
なう。SQL解析結果コード414中にルーチン呼び出しおよ
び結果コード形式候補ルーチン情報415が含まれていた
なら、動的ルーチン呼び出し情報418を作成し、結果コ
ード形式候補ルーチン情報415を基にして適用ルーチン
決定処理419を呼び出す。
QL解析処理部405によって生成されたSQL解析結果コード
414が示す内容に従ってデータベースに対する操作を行
なう。SQL解析結果コード414中にルーチン呼び出しおよ
び結果コード形式候補ルーチン情報415が含まれていた
なら、動的ルーチン呼び出し情報418を作成し、結果コ
ード形式候補ルーチン情報415を基にして適用ルーチン
決定処理419を呼び出す。
【0055】適用ルーチン決定処理419では、動的ルー
チン呼び出し情報418中の引数の実際のデータ型を基に
して、結果コード形式候補ルーチン情報415の中から起
動するルーチンをただ一つ選択し、適用ルーチン情報42
0を実行処理417へ返す。
チン呼び出し情報418中の引数の実際のデータ型を基に
して、結果コード形式候補ルーチン情報415の中から起
動するルーチンをただ一つ選択し、適用ルーチン情報42
0を実行処理417へ返す。
【0056】実行処理417は適用ルーチン情報420に示さ
れたルーチンを実際に呼び出す。SQL実行処理部416の結
果として、SQL実行結果421が作成される。SQL実行結果4
21は、データベースサーバ404から、クライアント401上
のUAP402に返送される。以上が、本実施形態のデータベ
ースシステムの全体構成図の説明である。
れたルーチンを実際に呼び出す。SQL実行処理部416の結
果として、SQL実行結果421が作成される。SQL実行結果4
21は、データベースサーバ404から、クライアント401上
のUAP402に返送される。以上が、本実施形態のデータベ
ースシステムの全体構成図の説明である。
【0057】図2は本実施形態の図1における候補ルー
チン絞り込み処理410の処理内容を示す図である。候補
ルーチン絞り込み処理410は、多重定義されたルーチン
の中から、ルーチン呼び出しに対して適用される可能性
を持ったルーチンのみを選択することで、実行時に多重
定義ルーチンの解決に要する処理負荷を最小にするため
の前処理である。
チン絞り込み処理410の処理内容を示す図である。候補
ルーチン絞り込み処理410は、多重定義されたルーチン
の中から、ルーチン呼び出しに対して適用される可能性
を持ったルーチンのみを選択することで、実行時に多重
定義ルーチンの解決に要する処理負荷を最小にするため
の前処理である。
【0058】候補ルーチン絞り込み処理410は、ルーチ
ン定義情報取得処理501、ルーチン群ソート処理503、基
準利用絞り込み処理505、ソート特性絞り込み処理507か
ら構成される。これらの各処理の詳細については後で説
明する。
ン定義情報取得処理501、ルーチン群ソート処理503、基
準利用絞り込み処理505、ソート特性絞り込み処理507か
ら構成される。これらの各処理の詳細については後で説
明する。
【0059】候補ルーチン絞り込み処理410において、
意味解析処理407から受け取ったルーチン呼び出し情報4
09は、ルーチン定義情報取得処理501に送られ、以降の
ルーチン群ソート処理503、基準利用絞り込み処理505、
ソート特性絞り込み処理507において使用される。
意味解析処理407から受け取ったルーチン呼び出し情報4
09は、ルーチン定義情報取得処理501に送られ、以降の
ルーチン群ソート処理503、基準利用絞り込み処理505、
ソート特性絞り込み処理507において使用される。
【0060】ルーチン定義情報取得処理501では、ディ
クショナリ情報411から取得したルーチン定義情報412の
中から、ルーチン呼び出し情報409に適合するルーチン
を選択し、それらを基に呼び出し可能ルーチン情報502
を作成する。呼び出し可能ルーチン情報502は、ルーチ
ン群ソート処理503に渡される。
クショナリ情報411から取得したルーチン定義情報412の
中から、ルーチン呼び出し情報409に適合するルーチン
を選択し、それらを基に呼び出し可能ルーチン情報502
を作成する。呼び出し可能ルーチン情報502は、ルーチ
ン群ソート処理503に渡される。
【0061】ルーチン群ソート処理503では、呼び出し
可能ルーチン情報502中のルーチンをパラメタのデータ
型の優先度を基にソートし、ソートした結果を、ソート
済み呼び出し可能ルーチン情報504として、次の基準利
用絞り込み処理505に渡す。
可能ルーチン情報502中のルーチンをパラメタのデータ
型の優先度を基にソートし、ソートした結果を、ソート
済み呼び出し可能ルーチン情報504として、次の基準利
用絞り込み処理505に渡す。
【0062】基準利用絞り込み処理505は、ソート済み
呼び出し可能ルーチン情報504の中から、ルーチン呼び
出しに指定された引数のデータ型そのものに対して適用
されるルーチン(以下、基準ルーチンと呼ぶ)を決定す
る。さらにソート済み呼び出し可能ルーチン情報504に
おいて、基準ルーチンよりも優先度の低いルーチンを削
除し、残ったものをソート済み仮候補ルーチン情報506
とする。ソート済み仮候補ルーチン情報506はソート特
性絞り込み処理507へと渡される。
呼び出し可能ルーチン情報504の中から、ルーチン呼び
出しに指定された引数のデータ型そのものに対して適用
されるルーチン(以下、基準ルーチンと呼ぶ)を決定す
る。さらにソート済み呼び出し可能ルーチン情報504に
おいて、基準ルーチンよりも優先度の低いルーチンを削
除し、残ったものをソート済み仮候補ルーチン情報506
とする。ソート済み仮候補ルーチン情報506はソート特
性絞り込み処理507へと渡される。
【0063】ソート特性絞り込み処理507では、ソート
済み仮候補ルーチン情報506の中から、ルーチン群のパ
ラメタのデータ型を互いに比較することで、呼び出され
る可能性のないルーチンを削除し、残ったものからソー
ト済み候補ルーチン情報413を作成する。以上が、本実
施形態のデータベースシステムの図1における候補ルー
チン絞り込み処理410の処理概要を示す図2の説明であ
る。
済み仮候補ルーチン情報506の中から、ルーチン群のパ
ラメタのデータ型を互いに比較することで、呼び出され
る可能性のないルーチンを削除し、残ったものからソー
ト済み候補ルーチン情報413を作成する。以上が、本実
施形態のデータベースシステムの図1における候補ルー
チン絞り込み処理410の処理概要を示す図2の説明であ
る。
【0064】図3は本実施形態のデータベースサーバ40
4の概略構成を示す図である。図3に示す様に本実施形
態のデータベースサーバ404は、CPU510と、メモリ511
と、磁気ディスク装置512と、フロッピィディスク装置5
13と、通信インタフェース514とを有している。
4の概略構成を示す図である。図3に示す様に本実施形
態のデータベースサーバ404は、CPU510と、メモリ511
と、磁気ディスク装置512と、フロッピィディスク装置5
13と、通信インタフェース514とを有している。
【0065】CPU510はデータベースサーバ404全体の動
作を制御する制御部である。メモリ511はルーチン群ソ
ート処理503、基準利用絞り込み処理505、ソート特性絞
り込み処理507及び適用ルーチン決定処理419を行う各処
理プログラムやデータをロードする記憶装置である。
作を制御する制御部である。メモリ511はルーチン群ソ
ート処理503、基準利用絞り込み処理505、ソート特性絞
り込み処理507及び適用ルーチン決定処理419を行う各処
理プログラムやデータをロードする記憶装置である。
【0066】磁気ディスク装置512は前記各処理プログ
ラムやデータを格納する記憶装置である。フロッピィデ
ィスク装置513は前記各処理プログラムやデータを記録
したフロッピィディスクを読み書きする装置である。通
信インタフェース514はクライアント401との通信を行う
インタフェースボードである。
ラムやデータを格納する記憶装置である。フロッピィデ
ィスク装置513は前記各処理プログラムやデータを記録
したフロッピィディスクを読み書きする装置である。通
信インタフェース514はクライアント401との通信を行う
インタフェースボードである。
【0067】ルーチン群ソート処理503、基準利用絞り
込み処理505、ソート特性絞り込み処理507及び適用ルー
チン決定処理419を行う処理部としてデータベースサー
バ404を機能させる為の処理プログラムは、フロッピィ
ディスク等の記録媒体に記録され、磁気ディスク装置51
2に格納された後、メモリ511にロードされて実行される
ものとする。なお、前記処理プログラムを記録する記録
媒体は前記以外のCD-ROM等の他の媒体であっても良い。
込み処理505、ソート特性絞り込み処理507及び適用ルー
チン決定処理419を行う処理部としてデータベースサー
バ404を機能させる為の処理プログラムは、フロッピィ
ディスク等の記録媒体に記録され、磁気ディスク装置51
2に格納された後、メモリ511にロードされて実行される
ものとする。なお、前記処理プログラムを記録する記録
媒体は前記以外のCD-ROM等の他の媒体であっても良い。
【0068】図4は本実施形態のルーチン呼び出しの例
を示す図である。この例601では、多重定義された関数s
ale_infoを呼び出している。まず宣言文602において、A
DTであるmoney型の変数price、INTEGER型の変数size、A
DTであるhouse型の変数であるpropertyを宣言してい
る。SQL文603では、これらの変数price、size、propert
yを引数として関数sale_infoを呼び出し、その結果を変
数rに代入している。
を示す図である。この例601では、多重定義された関数s
ale_infoを呼び出している。まず宣言文602において、A
DTであるmoney型の変数price、INTEGER型の変数size、A
DTであるhouse型の変数であるpropertyを宣言してい
る。SQL文603では、これらの変数price、size、propert
yを引数として関数sale_infoを呼び出し、その結果を変
数rに代入している。
【0069】各ADTの継承関係について604に示す。ADT
であるhouse型、money型はそれぞれ、605、606に示す継
承関係を持つ。継承関係605は、house型がreal_estate
型をスーパータイプに持ち、さらにlodge型とvilla型を
サブタイプに持つことを示している。継承関係606は、m
oney型のサブタイプにyen型、dollar型、mark型を持つ
ことを示している。
であるhouse型、money型はそれぞれ、605、606に示す継
承関係を持つ。継承関係605は、house型がreal_estate
型をスーパータイプに持ち、さらにlodge型とvilla型を
サブタイプに持つことを示している。継承関係606は、m
oney型のサブタイプにyen型、dollar型、mark型を持つ
ことを示している。
【0070】ADTの性質である代用可能性から、変数pri
ceには、money型とそのサブタイプであるyen型、dollar
型、mark型が代入可能である。同様に変数propertyに
は、house型とそのサブタイプであるlodge型、villa型
が代入可能である。これらのADTやその継承関係はCREAT
E TYPEなどの定義文によって定義される。以降では、こ
のルーチン呼び出しの例601を用いて、図2の候補ルー
チン絞り込み処理410中の各データおよび各処理の詳細
を説明する。
ceには、money型とそのサブタイプであるyen型、dollar
型、mark型が代入可能である。同様に変数propertyに
は、house型とそのサブタイプであるlodge型、villa型
が代入可能である。これらのADTやその継承関係はCREAT
E TYPEなどの定義文によって定義される。以降では、こ
のルーチン呼び出しの例601を用いて、図2の候補ルー
チン絞り込み処理410中の各データおよび各処理の詳細
を説明する。
【0071】図5は本実施形態のルーチン呼び出し情報
409の構成を示す図である。本実施形態のデータベース
システムでは動的ルーチン呼び出し情報418の構成もル
ーチン呼び出し情報409と同様の構成を持つものとす
る。もちろん、ルーチン呼び出し情報409と動的ルーチ
ン呼び出し情報418の構成は異なってもよい。
409の構成を示す図である。本実施形態のデータベース
システムでは動的ルーチン呼び出し情報418の構成もル
ーチン呼び出し情報409と同様の構成を持つものとす
る。もちろん、ルーチン呼び出し情報409と動的ルーチ
ン呼び出し情報418の構成は異なってもよい。
【0072】ルーチン呼び出し情報409は、ルーチン呼
び出し管理情報710、引数情報720、ADT情報730から構成
される。ルーチン呼び出し管理情報710は、ルーチン名
称711、引数の個数712、引数情報のアドレス713を含
む。ルーチン名称711には、呼び出すルーチンの名称を
示す文字列が入る。引数の個数712には、ルーチン呼び
出し時に指定された引数の個数が入る。引数情報のアド
レス713には、引数の個数712が1個以上の時に、引数情
報720へのアドレスが入る。引数の個数が複数の場合、
引数情報は連続した領域に引数の個数712の分だけ用意
される。引数情報の順序は、ルーチン呼び出しで指定さ
れた引数の順序に対応する。
び出し管理情報710、引数情報720、ADT情報730から構成
される。ルーチン呼び出し管理情報710は、ルーチン名
称711、引数の個数712、引数情報のアドレス713を含
む。ルーチン名称711には、呼び出すルーチンの名称を
示す文字列が入る。引数の個数712には、ルーチン呼び
出し時に指定された引数の個数が入る。引数情報のアド
レス713には、引数の個数712が1個以上の時に、引数情
報720へのアドレスが入る。引数の個数が複数の場合、
引数情報は連続した領域に引数の個数712の分だけ用意
される。引数情報の順序は、ルーチン呼び出しで指定さ
れた引数の順序に対応する。
【0073】なお、本実施形態のデータベースシステム
において、引数情報720中に次の引数の複数の引数情報
へのアドレスを持たせ、リスト形式で複数の引数情報を
持たせることも可能である。また、アドレスの代わりに
オフセットを用いることも可能である。
において、引数情報720中に次の引数の複数の引数情報
へのアドレスを持たせ、リスト形式で複数の引数情報を
持たせることも可能である。また、アドレスの代わりに
オフセットを用いることも可能である。
【0074】引数情報720は、引数データ型識別子721と
ADT情報のアドレス722を含む。引数データ型識別子721
には、引数のデータ型を示す識別子が入る。ADTの場
合、引数データ型識別子721には、ADTであることを示す
識別子が入る。更にADTの何型であるかという情報は、A
DT情報730の中に記述される。ADT情報のアドレス722に
は、引数のデータ型がADTの場合にそのADT情報730への
アドレスが入る。もし引数に全く同じADTが複数存在す
る場合、それぞれの引数情報ごとにADT情報を作成して
もよいし、またそのような場合は複数の引数情報から一
つのADT情報を参照するようにしてもよい。
ADT情報のアドレス722を含む。引数データ型識別子721
には、引数のデータ型を示す識別子が入る。ADTの場
合、引数データ型識別子721には、ADTであることを示す
識別子が入る。更にADTの何型であるかという情報は、A
DT情報730の中に記述される。ADT情報のアドレス722に
は、引数のデータ型がADTの場合にそのADT情報730への
アドレスが入る。もし引数に全く同じADTが複数存在す
る場合、それぞれの引数情報ごとにADT情報を作成して
もよいし、またそのような場合は複数の引数情報から一
つのADT情報を参照するようにしてもよい。
【0075】ADT情報730は、ADT識別子731、継承世代数
732、スーパータイプのADT情報のアドレス733から構成
される。ADT識別子731は、ADT同士でデータ型を区別す
るための識別子が入る。継承世代数732は、ADT情報730
が示すADTが継承した数を示す。直接のスーパータイプ
を一つしか持つことができない単一継承の場合、スーパ
ータイプの総数と一致する。スーパータイプのADT情報
のアドレス733には、スーパータイプのADT情報730への
アドレスが入る。スーパータイプが存在しない場合はNU
LL値が入る。
732、スーパータイプのADT情報のアドレス733から構成
される。ADT識別子731は、ADT同士でデータ型を区別す
るための識別子が入る。継承世代数732は、ADT情報730
が示すADTが継承した数を示す。直接のスーパータイプ
を一つしか持つことができない単一継承の場合、スーパ
ータイプの総数と一致する。スーパータイプのADT情報
のアドレス733には、スーパータイプのADT情報730への
アドレスが入る。スーパータイプが存在しない場合はNU
LL値が入る。
【0076】ここで、図4のルーチン呼び出しの例601
に対して、どのようなルーチン呼び出し情報409およびA
DT情報730が作成されるかを図を用いて説明する。
に対して、どのようなルーチン呼び出し情報409およびA
DT情報730が作成されるかを図を用いて説明する。
【0077】図6は本実施形態の図4の例のルーチン呼
び出しに関するルーチン呼び出し情報409の例を示す図
である。ルーチン呼び出し情報409の各要素について説
明する。ルーチン呼び出し管理情報710の内容は次のよ
うになる。ルーチン名称711には、関数名sale_infoが入
る。引数の個数712には、関数sale_infoを呼び出した時
の引数の個数である3が入る。引数情報のアドレス713へ
は、引数の個数712が1個以上なので、引数情報720aの先
頭のアドレスが入る。引数情報720a、720b、720cの内容
は次のようになる。
び出しに関するルーチン呼び出し情報409の例を示す図
である。ルーチン呼び出し情報409の各要素について説
明する。ルーチン呼び出し管理情報710の内容は次のよ
うになる。ルーチン名称711には、関数名sale_infoが入
る。引数の個数712には、関数sale_infoを呼び出した時
の引数の個数である3が入る。引数情報のアドレス713へ
は、引数の個数712が1個以上なので、引数情報720aの先
頭のアドレスが入る。引数情報720a、720b、720cの内容
は次のようになる。
【0078】引数情報720aには第一引数であるmoney型
の情報が入る。引数データ型識別子721aには、ADTを示
すデータ型識別子が入る。ADT情報のアドレス722aに
は、money型に関するADT情報730aへのアドレスが入る。
引数情報720bには第二引数であるINTEGER型の情報が入
る。引数データ型識別子721bには、INTEGER型を示すデ
ータ型識別子が入る。ADT情報のアドレス722bには、NUL
Lを示す値が入る。引数情報720cには、第三引数であるh
ouse型の情報が入る。データ型識別子721cには、ADTを
示すデータ型識別子が入る。ADT情報のアドレス722cに
は、house型に関するADT情報730cのアドレスが入る。AD
T情報730a、730cにはそれぞれADTであるmoney型とhouse
型に関する情報が入っている。
の情報が入る。引数データ型識別子721aには、ADTを示
すデータ型識別子が入る。ADT情報のアドレス722aに
は、money型に関するADT情報730aへのアドレスが入る。
引数情報720bには第二引数であるINTEGER型の情報が入
る。引数データ型識別子721bには、INTEGER型を示すデ
ータ型識別子が入る。ADT情報のアドレス722bには、NUL
Lを示す値が入る。引数情報720cには、第三引数であるh
ouse型の情報が入る。データ型識別子721cには、ADTを
示すデータ型識別子が入る。ADT情報のアドレス722cに
は、house型に関するADT情報730cのアドレスが入る。AD
T情報730a、730cにはそれぞれADTであるmoney型とhouse
型に関する情報が入っている。
【0079】図7は本実施形態のADT情報の詳細を示す
図である。図7は、図4のルーチン呼び出しの例601に
おける第三引数のhouse型に関するADT情報を示してい
る。730aはreal_estate型のADT情報である。ADT識別子7
31aには、real_estate型を示す識別子が入っている。re
al_estate型のスーパータイプはないので、継承世代数7
32aには0が入っており、スーパータイプのADT情報のア
ドレス733aにはNULLが入っている。
図である。図7は、図4のルーチン呼び出しの例601に
おける第三引数のhouse型に関するADT情報を示してい
る。730aはreal_estate型のADT情報である。ADT識別子7
31aには、real_estate型を示す識別子が入っている。re
al_estate型のスーパータイプはないので、継承世代数7
32aには0が入っており、スーパータイプのADT情報のア
ドレス733aにはNULLが入っている。
【0080】730bはhouse型のADT情報である。ADT識別
子731bには、house型を示す識別子が入っている。house
型のスーパータイプはreal_estate型であるから、継承
世代数732bには1が入っており、スーパータイプのADT情
報のアドレス733bにはreal_estate型のADT情報730aのア
ドレスが入っている。
子731bには、house型を示す識別子が入っている。house
型のスーパータイプはreal_estate型であるから、継承
世代数732bには1が入っており、スーパータイプのADT情
報のアドレス733bにはreal_estate型のADT情報730aのア
ドレスが入っている。
【0081】730cはlodge型のADT情報である。ADT識別
子731cには、lodge型を示す識別子が入っている。lodge
型のスーパータイプはhouse型であるから、継承世代数7
32cには2が入っており、スーパータイプのADT情報のア
ドレス733cにはhouse型のADT情報730bのアドレスが入っ
ている。
子731cには、lodge型を示す識別子が入っている。lodge
型のスーパータイプはhouse型であるから、継承世代数7
32cには2が入っており、スーパータイプのADT情報のア
ドレス733cにはhouse型のADT情報730bのアドレスが入っ
ている。
【0082】730dはvilla型のADT情報である。ADT識別
子731dには、villa型を示す識別子が入っている。villa
型のスーパータイプはhouse型であるから、継承世代数7
32dには2が入っており、スーパータイプのADT情報のア
ドレス733dにはhouse型のADT情報730bのアドレスが入っ
ている。
子731dには、villa型を示す識別子が入っている。villa
型のスーパータイプはhouse型であるから、継承世代数7
32dには2が入っており、スーパータイプのADT情報のア
ドレス733dにはhouse型のADT情報730bのアドレスが入っ
ている。
【0083】本図では、第三引数のhouse型に関してADT
情報730の構成を説明したが、第一引数のmoney型に関す
るADT情報730についても同様の構成を持つ。
情報730の構成を説明したが、第一引数のmoney型に関す
るADT情報730についても同様の構成を持つ。
【0084】図8は本実施形態のルーチン群情報の構成
を示す図である。図2のルーチン定義情報取得処理501
によって生成される呼び出し可能ルーチン情報502につ
いて、図を用いて説明する。呼び出し可能ルーチン情報
502のみならず、ソート済み呼び出し可能ルーチン情報5
04、ソート済み仮候補ルーチン情報506、ソート済み候
補ルーチン情報413も、結果コード形式候補ルーチン情
報415も、全て図8に示すルーチン群情報の形式とす
る。もちろん、それぞれ異なるデータ形式であっても構
わない。このルーチン群情報は、ルーチン呼び出し一つ
につき一つ作成される。
を示す図である。図2のルーチン定義情報取得処理501
によって生成される呼び出し可能ルーチン情報502につ
いて、図を用いて説明する。呼び出し可能ルーチン情報
502のみならず、ソート済み呼び出し可能ルーチン情報5
04、ソート済み仮候補ルーチン情報506、ソート済み候
補ルーチン情報413も、結果コード形式候補ルーチン情
報415も、全て図8に示すルーチン群情報の形式とす
る。もちろん、それぞれ異なるデータ形式であっても構
わない。このルーチン群情報は、ルーチン呼び出し一つ
につき一つ作成される。
【0085】図8において、ルーチン群情報はルーチン
管理情報1010、候補管理テーブル1020、個別ルーチン情
報1030、パラメタ情報1040、ADT情報730から構成され
る。候補ルーチン管理情報1010は、ルーチン名称1011、
パラメタ数1012、ルーチン数1013、候補管理テーブルの
アドレス1014から構成される。ルーチン名称1011には、
ルーチン呼び出しに指定されたルーチンの名称が文字列
として入る。パラメタ数1012には、ルーチンが持つパラ
メタの個数が入る。ルーチン数1013には、ルーチン群情
報に含まれているルーチンの総数が入る。候補管理テー
ブルのアドレス1014には、候補管理テーブル1020のアド
レスが入る。
管理情報1010、候補管理テーブル1020、個別ルーチン情
報1030、パラメタ情報1040、ADT情報730から構成され
る。候補ルーチン管理情報1010は、ルーチン名称1011、
パラメタ数1012、ルーチン数1013、候補管理テーブルの
アドレス1014から構成される。ルーチン名称1011には、
ルーチン呼び出しに指定されたルーチンの名称が文字列
として入る。パラメタ数1012には、ルーチンが持つパラ
メタの個数が入る。ルーチン数1013には、ルーチン群情
報に含まれているルーチンの総数が入る。候補管理テー
ブルのアドレス1014には、候補管理テーブル1020のアド
レスが入る。
【0086】候補管理テーブル1020は、個別ルーチン情
報1030へのアドレスを格納する配列であり、ルーチン管
理情報1010中のルーチン数1013に指定された数だけ要素
を持つ。
報1030へのアドレスを格納する配列であり、ルーチン管
理情報1010中のルーチン数1013に指定された数だけ要素
を持つ。
【0087】個別ルーチン情報1030は、各ルーチンにつ
いての情報を持ち、ルーチン識別子1031、パラメタ情報
のアドレス1032から構成される。ルーチン識別子1031に
は、ルーチンを識別するための識別子が入っている。パ
ラメタ情報のアドレス1032には、ルーチンの全パラメタ
の情報を持つパラメタ情報1040のアドレスが入る。
いての情報を持ち、ルーチン識別子1031、パラメタ情報
のアドレス1032から構成される。ルーチン識別子1031に
は、ルーチンを識別するための識別子が入っている。パ
ラメタ情報のアドレス1032には、ルーチンの全パラメタ
の情報を持つパラメタ情報1040のアドレスが入る。
【0088】パラメタ情報1040は、ルーチンのパラメタ
一つずつについての情報を持ち、パラメタデータ型識別
子1041、ADT情報のアドレス1042から構成される。パラ
メタデータ型識別子1041には、パラメタのデータ型を示
す識別子が入る。ADT情報のアドレス1042には、パラメ
タのデータ型がADTの場合に、そのADT情報730へのアド
レスが入る。パラメタのデータ型がADT以外の場合に
は、ADT情報のアドレス1042にはNULLが入る。
一つずつについての情報を持ち、パラメタデータ型識別
子1041、ADT情報のアドレス1042から構成される。パラ
メタデータ型識別子1041には、パラメタのデータ型を示
す識別子が入る。ADT情報のアドレス1042には、パラメ
タのデータ型がADTの場合に、そのADT情報730へのアド
レスが入る。パラメタのデータ型がADT以外の場合に
は、ADT情報のアドレス1042にはNULLが入る。
【0089】図9は本実施形態のルーチン群情報の例を
示す図である。図9は、図8に示したルーチン群情報の
形式で、多重定義されたルーチンがどのように格納され
るのかを表している。
示す図である。図9は、図8に示したルーチン群情報の
形式で、多重定義されたルーチンがどのように格納され
るのかを表している。
【0090】ルーチン群情報1001は、ルーチン管理情報
1010が持つルーチンの具体例で、多重定義された二つの
ルーチン1002と1003を含む。ルーチン1002は、dollar
型、DECIMAL型およびlodge型を引数に持つ関数sale_inf
oである。ルーチン1003は、money型、INTEGER型およびh
ouse型を引数に持つ関数sale_infoである。ただし、dol
lar型、lodge型、money型、house型はADTであり、それ
ぞれ図4に示す継承関係を持つものとする。
1010が持つルーチンの具体例で、多重定義された二つの
ルーチン1002と1003を含む。ルーチン1002は、dollar
型、DECIMAL型およびlodge型を引数に持つ関数sale_inf
oである。ルーチン1003は、money型、INTEGER型およびh
ouse型を引数に持つ関数sale_infoである。ただし、dol
lar型、lodge型、money型、house型はADTであり、それ
ぞれ図4に示す継承関係を持つものとする。
【0091】ルーチン管理情報1010において、ルーチン
名称1011には、ルーチン名sale_infoが入っており、パ
ラメタ数1012には、パラメタの個数3が入っており、候
補管理テーブルのアドレス1014には、候補管理テーブル
1020へのアドレスが入っている。
名称1011には、ルーチン名sale_infoが入っており、パ
ラメタ数1012には、パラメタの個数3が入っており、候
補管理テーブルのアドレス1014には、候補管理テーブル
1020へのアドレスが入っている。
【0092】候補管理テーブル1020には、ルーチン1002
とルーチン1003に対応した個別ルーチン情報1030aと103
0bへのアドレスが格納されている。個別ルーチン情報10
30aには、ルーチン1002の情報が格納されている。ルー
チン識別子1031aにはルーチン1002を示す識別子が入っ
ており、またパラメタ情報のアドレス1032aには、ルー
チン1002の第一パラメタについてのパラメタ情報1040a
のアドレスが入っている。ルーチン1002のパラメタに関
しては、パラメタ情報1040a、1040b、1040cに格納され
ている。
とルーチン1003に対応した個別ルーチン情報1030aと103
0bへのアドレスが格納されている。個別ルーチン情報10
30aには、ルーチン1002の情報が格納されている。ルー
チン識別子1031aにはルーチン1002を示す識別子が入っ
ており、またパラメタ情報のアドレス1032aには、ルー
チン1002の第一パラメタについてのパラメタ情報1040a
のアドレスが入っている。ルーチン1002のパラメタに関
しては、パラメタ情報1040a、1040b、1040cに格納され
ている。
【0093】パラメタ情報1040aにはルーチン1002の第
一パラメタであるdollar型に関する情報が入っており、
パラメタデータ型識別子1041aにはADTであることを示す
識別子が入り、またADT情報のアドレス1042aには、doll
ar型に関するADT情報730aへのアドレスが入る。
一パラメタであるdollar型に関する情報が入っており、
パラメタデータ型識別子1041aにはADTであることを示す
識別子が入り、またADT情報のアドレス1042aには、doll
ar型に関するADT情報730aへのアドレスが入る。
【0094】パラメタ情報1040bにはルーチン1002の第
二パラメタであるDECIMAL型の情報が入っており、パラ
メタデータ型識別子1041bにはDECIMAL型であることを示
す識別子が入り、またADT情報のアドレス1042bにはNULL
が入る。
二パラメタであるDECIMAL型の情報が入っており、パラ
メタデータ型識別子1041bにはDECIMAL型であることを示
す識別子が入り、またADT情報のアドレス1042bにはNULL
が入る。
【0095】パラメタ情報1040cにはルーチン1002の第
三パラメタであるlodge型の情報が入っており、パラメ
タデータ型識別子1041cにはADTであることを示す識別子
が入り、またADT情報のアドレス1042cには、lodge型に
関するADT情報730bへのアドレスが入る。
三パラメタであるlodge型の情報が入っており、パラメ
タデータ型識別子1041cにはADTであることを示す識別子
が入り、またADT情報のアドレス1042cには、lodge型に
関するADT情報730bへのアドレスが入る。
【0096】個別ルーチン情報1030bについても、個別
ルーチン情報1030aと同様にしてルーチン1003に関する
情報を持つ。
ルーチン情報1030aと同様にしてルーチン1003に関する
情報を持つ。
【0097】次に本実施形態のデータベースシステムの
図2におけるルーチン定義情報取得処理501の詳細につ
いて説明する。
図2におけるルーチン定義情報取得処理501の詳細につ
いて説明する。
【0098】ルーチン定義情報取得処理501では、ルー
チン呼び出し情報409中に含まれるルーチン名称と引数
の数を基に、ディクショナリ情報411からルーチン定義
情報412を取得し、さらにその中からルーチン呼び出し
情報409中の引数のデータ型に適合するパラメタを持つ
ルーチンを選択し、それらをまとめて、呼び出し可能ル
ーチン情報502を作成する。引数のデータ型に対して適
合するパラメタのデータ型は、ADTの場合は引数のデー
タ型と継承関係を持つデータ型(ADT)、ADT以外の場合は
引数のデータ型を適用できるデータ型である。なお、AD
T以外の場合に適用できるデータ型はシステムによって
異なる場合がある。
チン呼び出し情報409中に含まれるルーチン名称と引数
の数を基に、ディクショナリ情報411からルーチン定義
情報412を取得し、さらにその中からルーチン呼び出し
情報409中の引数のデータ型に適合するパラメタを持つ
ルーチンを選択し、それらをまとめて、呼び出し可能ル
ーチン情報502を作成する。引数のデータ型に対して適
合するパラメタのデータ型は、ADTの場合は引数のデー
タ型と継承関係を持つデータ型(ADT)、ADT以外の場合は
引数のデータ型を適用できるデータ型である。なお、AD
T以外の場合に適用できるデータ型はシステムによって
異なる場合がある。
【0099】図10は本実施形態の呼び出し可能ルーチ
ン情報502の例を示す図である。図10は、図4に示し
たルーチン呼び出しに対して、ルーチン定義情報取得処
理501が生成する呼び出し可能ルーチン情報502の例を表
している。
ン情報502の例を示す図である。図10は、図4に示し
たルーチン呼び出しに対して、ルーチン定義情報取得処
理501が生成する呼び出し可能ルーチン情報502の例を表
している。
【0100】呼び出し可能ルーチン情報502の例1200に
は、5つのルーチン1201〜1205が含まれており、いずれ
もルーチン名称がsale_info、パラメタの個数は3つであ
る。
は、5つのルーチン1201〜1205が含まれており、いずれ
もルーチン名称がsale_info、パラメタの個数は3つであ
る。
【0101】ルーチン1201のパラメタのデータ型は、左
から、dollar型、INTEGER型、house型である。ルーチン
1202のパラメタのデータ型は、左から、money型、INTEG
ER型、house型である。ルーチン1203のパラメタのデー
タ型は、左から、money型、INTEGER型、real_estate型
である。ルーチン1204のパラメタのデータ型は、左か
ら、dollar型、DECIMAL型、lodge型である。ルーチン12
05のパラメタのデータ型は、左から、yen型、INTEGER
型、lodge型である。
から、dollar型、INTEGER型、house型である。ルーチン
1202のパラメタのデータ型は、左から、money型、INTEG
ER型、house型である。ルーチン1203のパラメタのデー
タ型は、左から、money型、INTEGER型、real_estate型
である。ルーチン1204のパラメタのデータ型は、左か
ら、dollar型、DECIMAL型、lodge型である。ルーチン12
05のパラメタのデータ型は、左から、yen型、INTEGER
型、lodge型である。
【0102】ルーチン1201〜1205において、第一パラメ
タのデータ型は第一引数のデータ型であるmoney型と継
承関係を持ち、第二パラメタのデータ型は第二引数のデ
ータ型であるINTEGER型を適用できるデータ型であり、
第三パラメタのデータ型は第三引数のデータ型であるho
use型と継承関係を持つデータ型である。
タのデータ型は第一引数のデータ型であるmoney型と継
承関係を持ち、第二パラメタのデータ型は第二引数のデ
ータ型であるINTEGER型を適用できるデータ型であり、
第三パラメタのデータ型は第三引数のデータ型であるho
use型と継承関係を持つデータ型である。
【0103】次に、ルーチン群ソート処理503の詳細に
ついて説明する。図2において、ルーチン群ソート処理
503は、ルーチン定義情報取得処理501が作成した呼び出
し可能ルーチン情報502を入力とし、それらをパラメタ
のデータ型の優先度を用いて、優先度が高い順に並び替
えることによって、ソート済み呼び出し可能ルーチン情
報504を生成する。
ついて説明する。図2において、ルーチン群ソート処理
503は、ルーチン定義情報取得処理501が作成した呼び出
し可能ルーチン情報502を入力とし、それらをパラメタ
のデータ型の優先度を用いて、優先度が高い順に並び替
えることによって、ソート済み呼び出し可能ルーチン情
報504を生成する。
【0104】ソートは、図8における候補管理テーブル
1020において、格納されている個別ルーチン情報1030の
アドレスを並び替えることで行ない、パラメタのデータ
型の優先度順に並べるのであればどのようなソート方法
を用いてもよい。なお、パラメタは左から右の順序で優
先とする。パラメタのデータ型の優先順位は、パラメタ
のデータ型がADTの場合は継承世代数732(図5)が大きい
ものを優先とし、またADT以外のデータ型に関しては対
応する引数のデータ型優先度リスト上の優先度を用い
る。
1020において、格納されている個別ルーチン情報1030の
アドレスを並び替えることで行ない、パラメタのデータ
型の優先度順に並べるのであればどのようなソート方法
を用いてもよい。なお、パラメタは左から右の順序で優
先とする。パラメタのデータ型の優先順位は、パラメタ
のデータ型がADTの場合は継承世代数732(図5)が大きい
ものを優先とし、またADT以外のデータ型に関しては対
応する引数のデータ型優先度リスト上の優先度を用い
る。
【0105】このソートによって得られるソート済み呼
び出し可能ルーチン情報504において、ある実際の引数
のデータ型に対して起動することができるルーチンが複
数存在したとする。この場合、上記の優先度に従ってソ
ートされているため、ソート順で最も優先するルーチン
が最適なルーチンとなる。
び出し可能ルーチン情報504において、ある実際の引数
のデータ型に対して起動することができるルーチンが複
数存在したとする。この場合、上記の優先度に従ってソ
ートされているため、ソート順で最も優先するルーチン
が最適なルーチンとなる。
【0106】図11は本実施形態のソート済み呼び出し
可能ルーチン情報504の例を示す図である。図11は、
図4に示されているルーチン呼び出しにおいて、呼び出
し可能ルーチン情報502を図10の例1200としたとき
の、ルーチン群ソート処理503によって得られるソート
済み呼び出し可能ルーチン情報504の例を表している。
ソート済み呼び出し可能ルーチン情報504の例1300は、
呼び出し可能ルーチン情報502の例1200中の5つのルーチ
ン1201〜1205をパラメタの優先度1310の順序でソートし
たものであり、上から順に(この例では、ルーチン120
5、1201、1204、1202、1203の順に)優先度が高いものと
する。
可能ルーチン情報504の例を示す図である。図11は、
図4に示されているルーチン呼び出しにおいて、呼び出
し可能ルーチン情報502を図10の例1200としたとき
の、ルーチン群ソート処理503によって得られるソート
済み呼び出し可能ルーチン情報504の例を表している。
ソート済み呼び出し可能ルーチン情報504の例1300は、
呼び出し可能ルーチン情報502の例1200中の5つのルーチ
ン1201〜1205をパラメタの優先度1310の順序でソートし
たものであり、上から順に(この例では、ルーチン120
5、1201、1204、1202、1203の順に)優先度が高いものと
する。
【0107】次に基準利用絞り込み処理505の詳細につ
いて説明する。処理の流れをPAD(Problem Analysis Dia
gram)図を用いて図12に示す。
いて説明する。処理の流れをPAD(Problem Analysis Dia
gram)図を用いて図12に示す。
【0108】図12は本実施形態の基準利用絞り込み処
理505の詳細を示すPAD図である。ステップ1401では、ル
ーチン群ソート処理503が作成したソート済み呼び出し
可能ルーチン情報504について、基準ルーチンを先頭か
ら見つかるまで探す。このとき、ルーチン呼び出しで指
定された引数のデータ型に対して適用できるルーチンで
あるかどうかを調べる(ステップ1402)。引数のデータ型
に対して適用できるならばそのルーチンを基準ルーチン
と決定する(ステップ1403)。
理505の詳細を示すPAD図である。ステップ1401では、ル
ーチン群ソート処理503が作成したソート済み呼び出し
可能ルーチン情報504について、基準ルーチンを先頭か
ら見つかるまで探す。このとき、ルーチン呼び出しで指
定された引数のデータ型に対して適用できるルーチンで
あるかどうかを調べる(ステップ1402)。引数のデータ型
に対して適用できるならばそのルーチンを基準ルーチン
と決定する(ステップ1403)。
【0109】次のステップ1404では、ソート順で基準ル
ーチン以降のルーチンを削除し、残ったルーチン、すな
わち基準ルーチンおよびソート順で、基準ルーチン以前
のルーチンをソート済み仮候補ルーチン情報506とす
る。ルーチンの削除は、候補管理テーブル1020(図9)上
から、個別ルーチン情報1030のアドレスを削除すること
で行なう。
ーチン以降のルーチンを削除し、残ったルーチン、すな
わち基準ルーチンおよびソート順で、基準ルーチン以前
のルーチンをソート済み仮候補ルーチン情報506とす
る。ルーチンの削除は、候補管理テーブル1020(図9)上
から、個別ルーチン情報1030のアドレスを削除すること
で行なう。
【0110】図11に示したソート済み呼び出し可能ル
ーチン情報504の例1300に対して、基準利用絞り込み処
理505によって得られるソート済み仮候補ルーチン情報5
06の例を図13に示す。
ーチン情報504の例1300に対して、基準利用絞り込み処
理505によって得られるソート済み仮候補ルーチン情報5
06の例を図13に示す。
【0111】図13は本実施形態のソート済み仮候補ル
ーチン情報506の例を示す図である。ルーチン呼び出し
の引数のデータ型は、左からmoney型、INTEGER型、hous
e型であり、ソート済み呼び出し可能ルーチン情報504の
例1300中のルーチン群の先頭から、この引数に対して適
用できるルーチンを探していくと、ルーチン1202が見つ
かる。よって基準ルーチンをルーチン1202とし、ソート
順で基準ルーチンよりも優先度の低いルーチン1203を削
除することで、ソート済み仮候補ルーチン情報506が得
られる。
ーチン情報506の例を示す図である。ルーチン呼び出し
の引数のデータ型は、左からmoney型、INTEGER型、hous
e型であり、ソート済み呼び出し可能ルーチン情報504の
例1300中のルーチン群の先頭から、この引数に対して適
用できるルーチンを探していくと、ルーチン1202が見つ
かる。よって基準ルーチンをルーチン1202とし、ソート
順で基準ルーチンよりも優先度の低いルーチン1203を削
除することで、ソート済み仮候補ルーチン情報506が得
られる。
【0112】次に、ソート特性絞り込み処理507の詳細
について説明する。図2において、ソート特性絞り込み
処理507は、基準利用絞り込み処理505で生成したソート
済み仮候補ルーチン情報506の中のルーチンのパラメタ
のデータ型を比較することで、起動される可能性を持た
ないルーチンを削除し、残ったルーチンからソート済み
候補ルーチン情報413を作成する。
について説明する。図2において、ソート特性絞り込み
処理507は、基準利用絞り込み処理505で生成したソート
済み仮候補ルーチン情報506の中のルーチンのパラメタ
のデータ型を比較することで、起動される可能性を持た
ないルーチンを削除し、残ったルーチンからソート済み
候補ルーチン情報413を作成する。
【0113】図14は本実施形態のソート特性絞り込み
処理507の流れを示すPAD図である。まず、ステップ1601
において、ソート済み仮候補ルーチン情報506の先頭か
らチェックしていく。このときチェックしているルーチ
ンはi番めのルーチンとする。次にステップ1602におい
て、i番めのルーチンとi番め以降のルーチン(j番めとす
る)のパラメタのデータ型の比較を繰り返す。
処理507の流れを示すPAD図である。まず、ステップ1601
において、ソート済み仮候補ルーチン情報506の先頭か
らチェックしていく。このときチェックしているルーチ
ンはi番めのルーチンとする。次にステップ1602におい
て、i番めのルーチンとi番め以降のルーチン(j番めとす
る)のパラメタのデータ型の比較を繰り返す。
【0114】ステップ1603の比較では、j番めのルーチ
ンの全てのADTパラメタがi番めのルーチンの全てのADT
パラメタと同じか、サブタイプであるかどうかを調べ
る。もし、そうであればj番めのルーチンはi番めのルー
チンがあるために呼び出される可能性がないということ
になるので、ソート済み仮候補ルーチン情報506から削
除する(ステップ1604)。
ンの全てのADTパラメタがi番めのルーチンの全てのADT
パラメタと同じか、サブタイプであるかどうかを調べ
る。もし、そうであればj番めのルーチンはi番めのルー
チンがあるために呼び出される可能性がないということ
になるので、ソート済み仮候補ルーチン情報506から削
除する(ステップ1604)。
【0115】このように繰り返し1601、1602によって比
較を行ない、呼び出される可能性のないものを削除し、
残ったものをソート済み候補ルーチン情報413とする。
較を行ない、呼び出される可能性のないものを削除し、
残ったものをソート済み候補ルーチン情報413とする。
【0116】図15は本実施形態のソート済み候補ルー
チン情報413の例を示す図である。図15は、図13に
示したソート済み仮候補ルーチン情報506の例1500に対
して、ソート特性絞り込み処理507によって得られるソ
ート済み候補ルーチン情報413の例を表している。ソー
ト済み仮候補ルーチン情報506の例1500において、ルー
チン1205、1201、1204、1202を前述のPAD図(図14)の
手順でパラメタのデータ型を比較する。
チン情報413の例を示す図である。図15は、図13に
示したソート済み仮候補ルーチン情報506の例1500に対
して、ソート特性絞り込み処理507によって得られるソ
ート済み候補ルーチン情報413の例を表している。ソー
ト済み仮候補ルーチン情報506の例1500において、ルー
チン1205、1201、1204、1202を前述のPAD図(図14)の
手順でパラメタのデータ型を比較する。
【0117】このとき、ルーチン1201と1204の比較にお
いて、ルーチン1204の全てのADTパラメタのデータ型
が、ルーチン1201の対応するADTパラメタのデータ型と
同じもしくはサブタイプであるから、ルーチン1204が適
用できる全ての引数のデータ型に対して優先度の高いル
ーチン1201も適用できる。したがって、ルーチン1204は
呼び出される可能性を持たないので候補から除き、残っ
たルーチン1205、1201、1202がソート済み候補ルーチン
情報413の例1700となる。
いて、ルーチン1204の全てのADTパラメタのデータ型
が、ルーチン1201の対応するADTパラメタのデータ型と
同じもしくはサブタイプであるから、ルーチン1204が適
用できる全ての引数のデータ型に対して優先度の高いル
ーチン1201も適用できる。したがって、ルーチン1204は
呼び出される可能性を持たないので候補から除き、残っ
たルーチン1205、1201、1202がソート済み候補ルーチン
情報413の例1700となる。
【0118】次に図1における適用ルーチン決定処理41
9について詳細に説明する。適用ルーチン決定処理419
は、SQL解析結果コード414中に含まれる結果コード形式
候補ルーチン情報415の中のルーチンを先頭から調べ、
動的ルーチン呼び出し情報418中の実行時の引数のデー
タ型に対して適用できる最初のルーチンの識別子を適用
ルーチン情報420として、実行処理417へ返す。
9について詳細に説明する。適用ルーチン決定処理419
は、SQL解析結果コード414中に含まれる結果コード形式
候補ルーチン情報415の中のルーチンを先頭から調べ、
動的ルーチン呼び出し情報418中の実行時の引数のデー
タ型に対して適用できる最初のルーチンの識別子を適用
ルーチン情報420として、実行処理417へ返す。
【0119】実行処理417は、適用ルーチン決定処理419
から受け取った適用ルーチン情報420(適用ルーチンの
識別子)を基にルーチンを起動する。この適用ルーチン
決定処理419の処理の流れをPAD図を用いて図16に示
す。
から受け取った適用ルーチン情報420(適用ルーチンの
識別子)を基にルーチンを起動する。この適用ルーチン
決定処理419の処理の流れをPAD図を用いて図16に示
す。
【0120】図16は本実施形態の適用ルーチン決定処
理419の概要を示すPAD図である。ステップ1801では、結
果コード形式候補ルーチン情報415中のルーチンを先頭
から調べ、適用するルーチンが決定するまで繰り返す。
このとき調べているルーチンは、先頭からi番めのルー
チンであるとする。
理419の概要を示すPAD図である。ステップ1801では、結
果コード形式候補ルーチン情報415中のルーチンを先頭
から調べ、適用するルーチンが決定するまで繰り返す。
このとき調べているルーチンは、先頭からi番めのルー
チンであるとする。
【0121】ステップ1801による繰り返し処理は、ステ
ップ1802、ステップ1803、ステップ1806から構成され
る。ステップ1802では、適用フラグをON状態にする。次
のステップ1803では、i番めのルーチンのパラメタと引
数のデータ型を左から繰り返しによって比較を行ない、
適用フラグがOFF状態になるか、全てのパラメタの比較
が終了するまで繰り返す。このとき比較しているパラメ
タは左からj番めのものであるとする。ステップ1803の
繰り返しでは、j番目のパラメタとj番目の引数のデータ
型を比較する。このとき、j番目のパラメタがADTで、か
つj番目の引数のデータ型のスーパータイプでなけれ
ば、適用フラグをOFF状態にする(ステップ1805)。
ップ1802、ステップ1803、ステップ1806から構成され
る。ステップ1802では、適用フラグをON状態にする。次
のステップ1803では、i番めのルーチンのパラメタと引
数のデータ型を左から繰り返しによって比較を行ない、
適用フラグがOFF状態になるか、全てのパラメタの比較
が終了するまで繰り返す。このとき比較しているパラメ
タは左からj番めのものであるとする。ステップ1803の
繰り返しでは、j番目のパラメタとj番目の引数のデータ
型を比較する。このとき、j番目のパラメタがADTで、か
つj番目の引数のデータ型のスーパータイプでなけれ
ば、適用フラグをOFF状態にする(ステップ1805)。
【0122】ステップ1803の繰り返しにより全てのパラ
メタの比較が終了するか、もしくは、適用フラグがOFF
状態であれば、ステップ1806にて適用フラグの状態をチ
ェックする。もし適用フラグがON状態であれば、パラメ
タの比較を行なったi番めのルーチンを適用ルーチンと
し、ステップ1801による繰り返しを終了する。
メタの比較が終了するか、もしくは、適用フラグがOFF
状態であれば、ステップ1806にて適用フラグの状態をチ
ェックする。もし適用フラグがON状態であれば、パラメ
タの比較を行なったi番めのルーチンを適用ルーチンと
し、ステップ1801による繰り返しを終了する。
【0123】このようにして、適用ルーチン決定処理41
9では、結果コード形式候補ルーチン情報415の中から適
用するルーチンをただ一つ決定する。
9では、結果コード形式候補ルーチン情報415の中から適
用するルーチンをただ一つ決定する。
【0124】以上本実施形態のデータベースシステムに
示したように、図4の例の多重定義ルーチンの呼び出し
に対して、従来技術では引数が取りうるデータ型の組み
合わせである4×3=12通りに対して、5つのルーチンそれ
ぞれについて適用の可能性のチェックをしなければなら
ないのに対して、候補ルーチン絞り込み処理410により4
つのルーチンの適用の可能性をチェックするだけで済む
ようになる。
示したように、図4の例の多重定義ルーチンの呼び出し
に対して、従来技術では引数が取りうるデータ型の組み
合わせである4×3=12通りに対して、5つのルーチンそれ
ぞれについて適用の可能性のチェックをしなければなら
ないのに対して、候補ルーチン絞り込み処理410により4
つのルーチンの適用の可能性をチェックするだけで済む
ようになる。
【0125】従来技術は、各ADT引数のサブタイプ数の
積×呼び出し可能ルーチンの数だけのチェックが必要と
なったが、本発明はルーチン数のオーダーという非常に
少ない処理量で適用ルーチンを決定できるようになる。
積×呼び出し可能ルーチンの数だけのチェックが必要と
なったが、本発明はルーチン数のオーダーという非常に
少ない処理量で適用ルーチンを決定できるようになる。
【0126】以上説明した様に本実施形態のデータベー
スシステムによれば、多重定義ルーチンの呼び出しを含
むデータベース問い合わせを解析する際に、適用される
可能性を持つルーチンをルーチン同士のパラメタの比較
によって決定するので、データベース問い合わせの解析
時に行なう多重定義ルーチン解決のための候補の絞り込
み処理において、少ない処理量で候補を絞り込み、効率
よく必要最小限の候補を選択することが可能である。
スシステムによれば、多重定義ルーチンの呼び出しを含
むデータベース問い合わせを解析する際に、適用される
可能性を持つルーチンをルーチン同士のパラメタの比較
によって決定するので、データベース問い合わせの解析
時に行なう多重定義ルーチン解決のための候補の絞り込
み処理において、少ない処理量で候補を絞り込み、効率
よく必要最小限の候補を選択することが可能である。
【0127】
【発明の効果】本発明によれば多重定義ルーチンの呼び
出しを含むデータベース問い合わせを解析する際に、適
用される可能性を持つルーチンをルーチン同士のパラメ
タの比較によって決定するので、データベース問い合わ
せの解析時に行なう多重定義ルーチン解決のための候補
の絞り込み処理において、少ない処理量で候補を絞り込
み、効率よく必要最小限の候補を選択することが可能で
ある。
出しを含むデータベース問い合わせを解析する際に、適
用される可能性を持つルーチンをルーチン同士のパラメ
タの比較によって決定するので、データベース問い合わ
せの解析時に行なう多重定義ルーチン解決のための候補
の絞り込み処理において、少ない処理量で候補を絞り込
み、効率よく必要最小限の候補を選択することが可能で
ある。
【図1】本実施形態のデータベースシステムの概略構成
を示す図である。
を示す図である。
【図2】本実施形態の図1における候補ルーチン絞り込
み処理410の処理内容を示す図である。
み処理410の処理内容を示す図である。
【図3】本実施形態のデータベースサーバ404の概略構
成を示す図である。
成を示す図である。
【図4】本実施形態のルーチン呼び出しの例を示す図で
ある。
ある。
【図5】本実施形態のルーチン呼び出し情報409の構成
を示す図である。
を示す図である。
【図6】本実施形態の図4の例のルーチン呼び出しに関
するルーチン呼び出し情報409の例を示す図である。
するルーチン呼び出し情報409の例を示す図である。
【図7】本実施形態のADT情報の詳細を示す図である。
【図8】本実施形態のルーチン群情報の構成を示す図で
ある。
ある。
【図9】本実施形態のルーチン群情報の例を示す図であ
る。
る。
【図10】本実施形態の呼び出し可能ルーチン情報502
の例を示す図である。
の例を示す図である。
【図11】本実施形態のソート済み呼び出し可能ルーチ
ン情報504の例を示す図である。
ン情報504の例を示す図である。
【図12】本実施形態の基準利用絞り込み処理505の詳
細を示すPAD図である。
細を示すPAD図である。
【図13】本実施形態のソート済み仮候補ルーチン情報
506の例を示す図である。
506の例を示す図である。
【図14】本実施形態のソート特性絞り込み処理507の
流れを示すPAD図である。
流れを示すPAD図である。
【図15】本実施形態のソート済み候補ルーチン情報41
3の例を示す図である。
3の例を示す図である。
【図16】本実施形態の適用ルーチン決定処理419の概
要を示すPAD図である。
要を示すPAD図である。
【図17】従来の多重定義された関数を呼び出している
SQL文の例を示す図である。
SQL文の例を示す図である。
【図18】従来のADTを引数に取る多重定義された関数
の呼び出しを行なっているSQL文の例を示す図である。
の呼び出しを行なっているSQL文の例を示す図である。
【図19】従来のADTとADT以外のデータ型を引数に取る
関数が多重定義されている場合の関数呼び出しの例を示
す図である。
関数が多重定義されている場合の関数呼び出しの例を示
す図である。
400…高速ネットワーク、401…クライアント、402…UA
P、403…問い合わせ、404…データベースサーバ、405…
SQL解析処理部、406…構文解析処理、407…意味解析処
理、408…SQL解析結果コード生成処理、409…ルーチン
呼び出し情報、410…候補ルーチン絞り込み処理、411…
ディクショナリ情報、412…ルーチン定義情報、413…ソ
ート済み候補ルーチン情報、414…SQL解析結果コード、
415…結果コード形式候補ルーチン情報、416…SQL実行
処理部、417…実行処理、418…動的ルーチン呼び出し情
報、419…適用ルーチン決定処理、420…適用ルーチン情
報、421…SQL実行結果、501…ルーチン定義情報取得処
理、502…呼び出し可能ルーチン情報、503…ルーチン群
ソート処理、504…ソート済み呼び出し可能ルーチン情
報、505…基準利用絞り込み処理、506…ソート済み仮候
補ルーチン情報、507…ソート特性絞り込み処理、510…
CPU、511…メモリ、512…磁気ディスク装置、513…フロ
ッピィディスク装置、514…通信インタフェース、601…
ルーチン呼び出しの例、602…宣言文、603…SQL文、604
…抽象データ型継承関係、605…継承関係、606…継承関
係、701…ルーチン呼び出し情報409の例、710…ルーチ
ン呼び出し管理情報、711…ルーチン名称、712…引数の
個数、713…引数情報のアドレス、720…引数情報、721
…引数データ型識別子、722…ADT情報のアドレス、730
…ADT情報、731…ADT識別子、732…継承世代数、733…
スーパータイプのADT情報のアドレス、1010…ルーチン
管理情報、1011…ルーチン名称、1012…パラメタ数、10
13…ルーチン数、1014…候補管理テーブルのアドレス、
1020…候補管理テーブル、1030…個別ルーチン情報、10
31…ルーチン識別子、1032…パラメタ情報のアドレス、
1040…パラメタ情報、1041…パラメタデータ型識別子、
1042…ADT情報のアドレス、1001…ルーチン群情報、100
2と1003…ルーチン、1200…呼び出し可能ルーチン502の
例、1201〜1205…ルーチン、1300…ソート済み呼び出し
可能ルーチン情報504の例、1310…パラメタの優先度、1
500…ソート済み仮候補ルーチン情報506の例、1700…ソ
ート済み候補ルーチン情報413の例、101…関数の呼び出
しを行うSQL文の例、102…定義されている関数、103…
関数、104…関数、105…SQL文、106…SQL文、107…SQL
文、108…データ型優先度リスト、201…関数の呼び出し
を行うSQL文の例、202…抽象データ型継承関係、203…
定義されている関数、204…関数、205…関数、206…SQL
文、207…SQL文、208…SQL文、209…SQL文、210…SQL
文、211…データ型優先度リスト、301…不動産の売却情
報を返す関数sale_infoを呼び出すSQL文の例、302…SQL
文、303及び304…継承関係、305…SQL文、306…表、307
…関数の定義、308…関数、309…関数、310…関数、311
…関数、312…関数。
P、403…問い合わせ、404…データベースサーバ、405…
SQL解析処理部、406…構文解析処理、407…意味解析処
理、408…SQL解析結果コード生成処理、409…ルーチン
呼び出し情報、410…候補ルーチン絞り込み処理、411…
ディクショナリ情報、412…ルーチン定義情報、413…ソ
ート済み候補ルーチン情報、414…SQL解析結果コード、
415…結果コード形式候補ルーチン情報、416…SQL実行
処理部、417…実行処理、418…動的ルーチン呼び出し情
報、419…適用ルーチン決定処理、420…適用ルーチン情
報、421…SQL実行結果、501…ルーチン定義情報取得処
理、502…呼び出し可能ルーチン情報、503…ルーチン群
ソート処理、504…ソート済み呼び出し可能ルーチン情
報、505…基準利用絞り込み処理、506…ソート済み仮候
補ルーチン情報、507…ソート特性絞り込み処理、510…
CPU、511…メモリ、512…磁気ディスク装置、513…フロ
ッピィディスク装置、514…通信インタフェース、601…
ルーチン呼び出しの例、602…宣言文、603…SQL文、604
…抽象データ型継承関係、605…継承関係、606…継承関
係、701…ルーチン呼び出し情報409の例、710…ルーチ
ン呼び出し管理情報、711…ルーチン名称、712…引数の
個数、713…引数情報のアドレス、720…引数情報、721
…引数データ型識別子、722…ADT情報のアドレス、730
…ADT情報、731…ADT識別子、732…継承世代数、733…
スーパータイプのADT情報のアドレス、1010…ルーチン
管理情報、1011…ルーチン名称、1012…パラメタ数、10
13…ルーチン数、1014…候補管理テーブルのアドレス、
1020…候補管理テーブル、1030…個別ルーチン情報、10
31…ルーチン識別子、1032…パラメタ情報のアドレス、
1040…パラメタ情報、1041…パラメタデータ型識別子、
1042…ADT情報のアドレス、1001…ルーチン群情報、100
2と1003…ルーチン、1200…呼び出し可能ルーチン502の
例、1201〜1205…ルーチン、1300…ソート済み呼び出し
可能ルーチン情報504の例、1310…パラメタの優先度、1
500…ソート済み仮候補ルーチン情報506の例、1700…ソ
ート済み候補ルーチン情報413の例、101…関数の呼び出
しを行うSQL文の例、102…定義されている関数、103…
関数、104…関数、105…SQL文、106…SQL文、107…SQL
文、108…データ型優先度リスト、201…関数の呼び出し
を行うSQL文の例、202…抽象データ型継承関係、203…
定義されている関数、204…関数、205…関数、206…SQL
文、207…SQL文、208…SQL文、209…SQL文、210…SQL
文、211…データ型優先度リスト、301…不動産の売却情
報を返す関数sale_infoを呼び出すSQL文の例、302…SQL
文、303及び304…継承関係、305…SQL文、306…表、307
…関数の定義、308…関数、309…関数、310…関数、311
…関数、312…関数。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 土田 正士 神奈川県横浜市都筑区加賀原二丁目2番 株式会社日立製作所システム開発本部内 (72)発明者 亀城 嘉人 神奈川県横浜市戸塚区戸塚町5030番地 株 式会社日立製作所ソフトウェア開発本部内
Claims (3)
- 【請求項1】 多重定義されたルーチン群の呼び出しを
解析して呼び出されるルーチンを決定する多重定義ルー
チン解決方法において、 予め定められた優先度を基にルーチン群をソートするル
ーチン群ソートステップと、 該ソートされたルーチンから呼び出しの引数の定義上の
型に対して呼び出すことができるルーチンの中から引数
のデータ型の優先度が最も高いルーチンを決定し、その
ルーチンよりも優先度が低いルーチンを候補から外す基
準利用絞り込みステップと、 上記基準利用絞り込みステップによって残ったルーチン
同士で引数のデータ型を比較することで、呼び出される
可能性のないルーチンを候補から削除するソート特性絞
り込みステップとを有することを特徴とする多重定義ル
ーチン解決方法。 - 【請求項2】 多重定義されたルーチン群の呼び出しを
解析して呼び出されるルーチンを決定するデータベース
サーバにおいて、 予め定められた優先度を基にルーチン群をソートするル
ーチン群ソート処理部と、 該ソートされたルーチンから呼び出しの引数の定義上の
型に対して呼び出すことができるルーチンの中から引数
のデータ型の優先度が最も高いルーチンを決定し、その
ルーチンよりも優先度が低いルーチンを候補から外す基
準利用絞り込み処理部と、 上記基準利用絞り込みステップによって残ったルーチン
同士で引数のデータ型を比較することで、呼び出される
可能性のないルーチンを候補から削除するソート特性絞
り込み処理部とを備えることを特徴とするデータベース
サーバ。 - 【請求項3】 多重定義されたルーチン群の呼び出しを
解析して呼び出されるルーチンを決定するデータベース
サーバとしてコンピュータを機能させる為のプログラム
を記録した媒体において、 予め定められた優先度を基にルーチン群をソートするル
ーチン群ソート処理部と、 該ソートされたルーチンから呼び出しの引数の定義上の
型に対して呼び出すことができるルーチンの中から引数
のデータ型の優先度が最も高いルーチンを決定し、その
ルーチンよりも優先度が低いルーチンを候補から外す基
準利用絞り込み処理部と、 上記基準利用絞り込みステップによって残ったルーチン
同士で引数のデータ型を比較することで、呼び出される
可能性のないルーチンを候補から削除するソート特性絞
り込み処理部としてコンピュータを機能させる為のプロ
グラムを記録したことを特徴とする媒体。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP10145224A JPH11338875A (ja) | 1998-05-27 | 1998-05-27 | 多重定義ルーチン解決方法及びその実施装置並びにその処理プログラムを記録した媒体 |
| US09/321,206 US6480833B2 (en) | 1998-05-27 | 1999-05-27 | Method of resolving overloaded routines, system for implementing the same and medium for storing processing program therefor |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP10145224A JPH11338875A (ja) | 1998-05-27 | 1998-05-27 | 多重定義ルーチン解決方法及びその実施装置並びにその処理プログラムを記録した媒体 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH11338875A true JPH11338875A (ja) | 1999-12-10 |
Family
ID=15380227
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP10145224A Pending JPH11338875A (ja) | 1998-05-27 | 1998-05-27 | 多重定義ルーチン解決方法及びその実施装置並びにその処理プログラムを記録した媒体 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US6480833B2 (ja) |
| JP (1) | JPH11338875A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011070696A (ja) * | 2000-07-10 | 2011-04-07 | Microsoft Corp | データ型を処理するシステムおよび方法 |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4713707B2 (ja) * | 2000-03-28 | 2011-06-29 | 日産自動車株式会社 | データ表示システム |
| US8505024B2 (en) | 2000-12-18 | 2013-08-06 | Shaw Parsing Llc | Storing state in a dynamic content routing network |
| US7757225B2 (en) * | 2001-06-29 | 2010-07-13 | Microsoft Corporation | Linktime recognition of alternative implementations of programmed functionality |
| US20050060307A1 (en) * | 2003-09-12 | 2005-03-17 | International Business Machines Corporation | System, method, and service for datatype caching, resolving, and escalating an SQL template with references |
| US7743087B1 (en) | 2006-03-22 | 2010-06-22 | The Math Works, Inc. | Partitioning distributed arrays according to criterion and functions applied to the distributed arrays |
| US8170594B1 (en) * | 2006-08-08 | 2012-05-01 | Nextel Communications, Inc. | Method and computer-readable medium for precedence group calling |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63173135A (ja) * | 1987-01-12 | 1988-07-16 | Fujitsu Ltd | メソツド特定化の処理方式 |
| JPH06139130A (ja) * | 1992-10-23 | 1994-05-20 | Fujitsu Ltd | オブジェクト指向データベースにおける問い合わせ処理方式 |
| JPH1069489A (ja) * | 1996-08-28 | 1998-03-10 | Hitachi Ltd | データベース処理方法 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0370048A (ja) | 1989-08-09 | 1991-03-26 | Hitachi Ltd | ディクショナリ創成方法 |
| JPH04242426A (ja) | 1991-01-16 | 1992-08-31 | Nec Corp | リンク時多重定義外部名処理方式 |
| US5488727A (en) * | 1991-09-30 | 1996-01-30 | International Business Machines Corporation | Methods to support multimethod function overloading with compile-time type checking |
| JPH0594349A (ja) | 1991-10-03 | 1993-04-16 | Hokkaido Nippon Denki Software Kk | 資源情報チエツク方式 |
| JPH05120100A (ja) | 1991-10-25 | 1993-05-18 | Hokkaido Nippon Denki Software Kk | 資源定義方式 |
| US5696973A (en) * | 1995-02-17 | 1997-12-09 | International Business Machines Corporation | Index-based method for supporting multimethod function overloading with compile-time type checking and run-time dispatch |
-
1998
- 1998-05-27 JP JP10145224A patent/JPH11338875A/ja active Pending
-
1999
- 1999-05-27 US US09/321,206 patent/US6480833B2/en not_active Expired - Fee Related
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63173135A (ja) * | 1987-01-12 | 1988-07-16 | Fujitsu Ltd | メソツド特定化の処理方式 |
| JPH06139130A (ja) * | 1992-10-23 | 1994-05-20 | Fujitsu Ltd | オブジェクト指向データベースにおける問い合わせ処理方式 |
| JPH1069489A (ja) * | 1996-08-28 | 1998-03-10 | Hitachi Ltd | データベース処理方法 |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011070696A (ja) * | 2000-07-10 | 2011-04-07 | Microsoft Corp | データ型を処理するシステムおよび方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US6480833B2 (en) | 2002-11-12 |
| US20020055931A1 (en) | 2002-05-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3742177B2 (ja) | 並列データベースシステムルーチン実行方法 | |
| US6502086B2 (en) | Mapping binary objects in extended relational database management systems with relational registry | |
| US8266147B2 (en) | Methods and systems for database organization | |
| RU2236699C1 (ru) | Способ поиска и выборки информации с повышенной релевантностью | |
| US6760718B2 (en) | Database operation processor | |
| US6665661B1 (en) | System and method for use in text analysis of documents and records | |
| US6728720B1 (en) | Identifying preferred indexes for databases | |
| US7464096B2 (en) | Method and apparatus for information mining and filtering | |
| US6877000B2 (en) | Tool for converting SQL queries into portable ODBC | |
| US5606699A (en) | Storing and querying execution information for object-oriented programs | |
| EP0667586A2 (en) | Database generator | |
| US7461089B2 (en) | Method and system for creating profiling indices | |
| US6343286B1 (en) | Efficient technique to defer large object access with intermediate results | |
| US6317749B1 (en) | Method and apparatus for providing relationship objects and various features to relationship and other objects | |
| US7539660B2 (en) | Method and system for generating SQL joins to optimize performance | |
| JP2001084257A (ja) | 問合せ処理方法及びシステム | |
| JPH10232875A (ja) | データベース管理方法および並列データベース管理システム | |
| US7051016B2 (en) | Method for the administration of a data base | |
| US5649180A (en) | Method for generating hierarchical specification information from software | |
| US8577865B2 (en) | Document searching system | |
| JPH05204983A (ja) | リレーショナルデータベース処理装置および処理方法 | |
| US6480833B2 (en) | Method of resolving overloaded routines, system for implementing the same and medium for storing processing program therefor | |
| JPH06348757A (ja) | 文書検索装置および方法 | |
| CN115168399B (zh) | 基于图形化界面的数据处理方法、装置、设备及存储介质 | |
| US20050071333A1 (en) | Method for determining synthetic term senses using reference text |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050208 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050406 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050614 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060131 |