摘要:
Various embodiments of the present invention are direct to the utilization of Blob Handles (BHs) which are an internal representation of a large value. BHs are immutable and stateless references to a large data object. The structure of a BH contains enough information to return an ILockBytes interface in order to provide access to the corresponding large data block, and a BH can also return information regarding its own lifetime description. A BH can be completely described using (a) a pointer to the beginning of BH data and (b) the byte-length of the BH.
摘要:
Various embodiments of the present invention are direct to the utilization of Blob Handles (BHs) which are an internal representation of a large value. BHs are immutable and stateless references to a large data object. The structure of a BH contains enough information to return an ILockBytes interface in order to provide access to the corresponding large data block, and a BH can also return information regarding its own lifetime description. A BH can be completely described using (a) a pointer to the beginning of BH data and (b) the byte-length of the BH.
摘要:
Various embodiments of the present invention enable functions, procedures, and triggers to be written in any of the .NET languages and executed by the RDBMS. User code can access data from the local or other SQL servers using the SQL Programming Model and both the SqlServer or SqlClient implementations respectively. Moreover, to improve upon the previous extensibility mechanism, a set of APIs (commonly known as “the in-process provider” or “inproc provider”) is utilized to provide efficient and easy to use data access while running inproc, a data access API that is an implementation of the ADO.net programming model.
摘要:
Various embodiments of the present invention enable functions, procedures, and triggers to be written in any of the .NET languages and executed by the RDBMS. User code can access data from the local or other SQL servers using the SQL Programming Model and both the SqlServer or SqlClient implementations respectively. Moreover, to improve upon the previous extensibility mechanism, a set of APIs (commonly known as “the in-process provider” or “inproc provider”) is utilized to provide efficient and easy to use data access while running inproc, a data access API that is an implementation of the ADO.net programming model.
摘要:
A database system and method allows a user to write program code in a high-level programming language that implements a class that defines the structure of a user-defined type and methods that can be invoked on instances of the type. The class is then registered with the database system, which enforces a specific contract for user-defined types against the class. The contract comprises the following requirements. First, the class must specify one of a plurality of different formats for persisting instances of the user-defined type in a database store. Second, the class must be capable of returning a null value for the user-defined type. Third, the class must provide a method for converting the user-defined type to another type. Once these requirements are satisfied, the database system enables instances of the user-defined type to be created. A user-defined type can be used in all contexts where any other built-in type can be used. This includes defining columns of tables, declaring variables and parameters to functions and stored procedures, and evaluating expressions of the user-defined type in SQL queries and updates. Preferably, the database system stores metadata about the user-defined type for subsequent use in creating instances of the type.
摘要:
A database system and method allows a user to write program code in a high-level programming language that implements a class that defines the structure of a user-defined type and methods that can be invoked on instances of the type. The class is then registered with the database system, which enforces a specific contract for user-defined types against the class. The contract comprises the following requirements. First, the class must specify one of a plurality of different formats for persisting instances of the user-defined type in a database store. Second, the class must be capable of returning a null value for the user-defined type. Third, the class must provide a method for converting the user-defined type to another type. Once these requirements are satisfied, the database system enables instances of the user-defined type to be created. A user-defined type can be used in all contexts where any other built-in type can be used. This includes defining columns of tables, declaring variables and parameters to functions and stored procedures, and evaluating expressions of the user-defined type in SQL queries and updates. Preferably, the database system stores metadata about the user-defined type for subsequent use in creating instances of the type.
摘要:
A database system and method allows a user to write program code in a high-level programming language that implements a class that defines the structure of a user-defined type and methods that can be invoked on instances of the type. The class is then registered with the database system, which enforces a specific contract for user-defined types against the class. The contract comprises the following requirements. First, the class must specify one of a plurality of different formats for persisting instances of the user-defined type in a database store. Second, the class must be capable of returning a null value for the user-defined type. Third, the class must provide a method for converting the user-defined type to another type. Once these requirements are satisfied, the database system enables instances of the user-defined type to be created. A user-defined type can be used in all contexts where any other built-in type can be used. This includes defining columns of tables, declaring variables and parameters to functions and stored procedures, and evaluating expressions of the user-defined type in SQL queries and updates. Preferably, the database system stores metadata about the user-defined type for subsequent use in creating instances of the type.
摘要:
The SQL Algebrizer of the present invention comprises a plurality of algorithms to “algebrize” SQL Trees to QP Algebra using an approach that is more consistent and much more efficient than typical algebrizers. More specifically, the Algebrizer of the present invention processes a SQL Tree using a reduced number of recursive depth-first passes by performing multiple operations in a single pass. Furthermore, the Algebrizer of the present invention also performs the operation of constant folding in this single, multi-operation pass so that the QP, upon receiving the QP Algebra, needs not perform this operation at all.
摘要:
The present invention the is directed to systems and methods for hosting the CLR in a DBMS in order to achieve reliability, scalability, security, and robustness for enabled DBMS programming features. Integrating the CLR with a DBMS enables programming features in the database such as stored procedures, functions, triggers, types, and aggregates to be written in any of the programming languages that are compiled into IL code supported by the CLR. For the various embodiments of the present invention, the CLR is hosted inside the DBMS and, instead of making requests directly to the server operating system, the CLR instead interfaces with the DBMS via DBMS APIs for such requests, and only the DBMS directly interfaces with the server operating system to access the server.
摘要:
A database system and method allows a user to write program code in a high-level programming language that implements a class that defines the structure of a user-defined aggregate and methods that can be invoked on instances of the user-defined aggregate. The class is then registered with the database system, which enforces a specific contract for user-defined aggregates against the class. The contract comprises the following requirements. First, the class must specify one of a plurality of different formats for persisting instances of the user-defined aggregate in a database store. Second, the class must comprise a first method that can be invoked to initialize the computation of an instance of the user-defined aggregate, a second method that can be invoked to accumulate a plurality of values to be aggregated with the user-defined aggregate, a third method that can be invoked to merge an instance of the user-defined aggregate with another partial aggregation, and a fourth method that can be invoked to compute a final result of an instance of the user-defined aggregate. Once these requirements are satisfied, the database system enables instances of the user-defined aggregate to be created. Preferably, the database system stores metadata about the user-defined aggregate for subsequent use in creating instances of the aggregate.