Systems and methods for supporting inheritance for user-defined types
First Claim
1. A system comprising:
- at least one processor;
computing memory communicatively coupled to the processor, the computing memory operable to store and retrieve at least one user-defined type defined by a class created by managed code, the class comprising information for describing a structure of said at least one user-defined type, and information for describing an inheritance relationship between said at least one user-defined type and a second user-defined type, wherein the inheritance relationship of the second user-defined type to the at least one user-defined type is at least one of a subtype or a supertype of said at least one user-defined type;
a database stored in said computing memory with an extensible type system, the class created by the managed code that defines the at least one user-defined type is compiled into an assembly that is explicitly registered with the database such that the user-defined type acts as a scalar type within a structured query language (SQL) language type system, the explicit registration indicating the inheritance relationship between said at least one user-defined type and said second user-defined type.
2 Assignments
0 Petitions
Accused Products
Abstract
Various embodiments of the present invention are directed to a database with an extensible type system for at least one user-defined type that comprises information for describing its structure as well as information for describing an inheritance relationship between itself and another user-defined type (either a subtype or a supertype/base type). For certain embodiments, the user-defined type is defined in something other than Sequential Query Language (SQL) statement such as, for example, a Common Language Runtime (CLR) statement, a statement in C, C++, and C# (“C-sharp”), and/or a visual basic statement. In any event, several embodiments are further directed to a system wherein the database is aware of the inheritance relationship between two user-defined types by an explicit registration of the user-defined types with said database.
-
Citations
25 Claims
-
1. A system comprising:
-
at least one processor; computing memory communicatively coupled to the processor, the computing memory operable to store and retrieve at least one user-defined type defined by a class created by managed code, the class comprising information for describing a structure of said at least one user-defined type, and information for describing an inheritance relationship between said at least one user-defined type and a second user-defined type, wherein the inheritance relationship of the second user-defined type to the at least one user-defined type is at least one of a subtype or a supertype of said at least one user-defined type; a database stored in said computing memory with an extensible type system, the class created by the managed code that defines the at least one user-defined type is compiled into an assembly that is explicitly registered with the database such that the user-defined type acts as a scalar type within a structured query language (SQL) language type system, the explicit registration indicating the inheritance relationship between said at least one user-defined type and said second user-defined type. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method implemented at least in part by a computing system for providing, in a database stored in memory, an extensible type system for at least one user-defined type, said method comprising:
-
storing a class created by managed code in memory, said class comprising information-for describing a structure of said at least one user-defined type, wherein the class is compiled into an assembly; storing information in memory for describing an inheritance relationship between said at least one user-defined type and a second user-defined type in said at least one user-defined type, wherein the inheritance relationship of the second user-defined type to the at least one user-defined type is at least one of a subtype or a supertype of said at least one user-defined type; performing an explicit registration of the assembly, with said database stored in memory such that the user-defined type acts as a scalar type within a structured qury language (SQL) language type system, said explicit registration making said database aware of said inheritance relationship between said at least one user-defined type and said second user-defined type. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A computer-readable storage medium comprising computer-readable instructions for a database stored in memory with an extensible type system for at least one user-defined type, said instructions comprising instructions for:
-
storing a class created by managed code in memory, said class comprising information for describing a structure of said at least one user-defined type, wherein the class is compiled into an assembly; storing information in memory for describing an inheritance relationship between said at least one user-defined type and a second user-defined type in said at least one user-defined type, wherein the inheritance relationship of the second user-defined type to the at least one user-defined type is at least one of a subtype or a supertype of said at least one user-defined type; performing an explicit registration of the assembly, with said database stored in memory such that the user-defined type acts as a scalar type within a structured qury language (SQL) language type system, said explicit registration making said database aware of said inheritance relationship between said at least one user-defined type and said second user-defined type. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22)
-
-
23. A method implemented at least in part by a computing system for providing, in a database stored in memory, a queryable catalog view of metadata for at least one user-defined type, said method comprising:
-
storing information in memory for describing a structure of said at least one user-defined type-in said at least one-user-defined type; storing information in memory for describing an inheritance relationship between said at least one user-defined type and a second user-defined type in said at least one user-defined type, wherein the inheritance relationship of the second user-defined type to the at least one user-defined type is at least one of a subtype or a supertype of said at least one user-defined type; and recording in metadata for the at least one user-defined type the inheritance relationship between the at least one user-defined type and the second user-defined type, wherein the metadata is searchable through queryable catalog views that may be queried; and storing said metadata in memory.
-
-
24. A method implemented at least in part by a computing system for searching, in a database storing metadata in memory, for the extent of substitutability for at least one user-defined type, said method comprising:
-
querying the metadata for a user-defined type to identify at least one user-defined type with information stored describing an inheritance relationship with a second user-defined type; identifying the at least one user-defined type, wherein the inheritance relationship described is that the second user-defined type is a subtype of the at least one user-defined type; identifying a property of a site of the at least one user-defined type, wherein the site has an associated type definition and a property where a value of the subtype type can be substituted for a value of the at least one user-defined type; substituting a value of the second user-defined type for the value of the at least one user-defined type.
-
-
25. A method implemented at least in part by a computing system for providing, in a database stored in memory, a queryable catalog view of metadata for at least one user-defined type, said method comprising:
-
storing information in memory for describing a structure of said at least one user-defined type-in said at least one-user-defined type wherein an inheritance relationship described is that the at least one user-defined type is a supertype, and a second-user-defined type is a subtype of said supertype; identifying a runtime type of a value of the supertype, wherein the runtime type of the value may be different from a compile time value of the supertype; creating indexes over the runtime type of the value; using the index in predicates based on the runtime type of the value.
-
Specification