SQL Reference


Conservative Binding Semantics

There are situations within a database where the functions, methods and data types are resolved when the statement is processed and the database manager must be able to repeat this resolution. This is true in:

For static DML statements in packages, the function, method and data type references are resolved during the bind operation. Function, method and data type references in views, triggers, and check constraints are resolved when the database object is created.

If function or method resolution is performed again on any function or method references in these objects, it could change the behavior if a new function or method has been added with a signature that is a better match but the actual executable performs different operations. Similarly, if resolution is performed again on any data type in these objects, it could change the behavior if a new data type has been added with the same name in a different schema that is also on the SQL path. In order to avoid this, where necessary, the database manager applies the concept of conservative binding semantics. This concept ensures that the function and data type references will be resolved using the same SQL path as when it was bound. Furthermore, the creation timestamp of functions 31 , methods and data types considered during resolution is not later than the time when the statement was bound 32 . In this way, only the functions and data types that were considered during function, method and data type resolution when the statement was originally processed will be considered. Hence, newly created functions, methods and data types are not considered when conservative binding semantics are applied.

For static DML in packages, the packages can rebind either implicitly or by explicitly issuing the REBIND command (or corresponding API) or the BIND command (or corresponding API). The implicit rebind is always performed to resolve functions, methods and data types with conservative binding semantics. The REBIND command provides the choice to resolve with conservative binding semantics (RESOLVE CONSERVATIVE option) or to resolve considering any new functions, methods and data types (by default or using the RESOLVE ANY option).


Footnotes:

31
Built-in functions added starting with Version 6.1 have a creation timestamp that is based on the time of database creation or migration.

32
For views, conservative binding also ensures that the columns of the view are the same as those that existed at the time the view was created. For example, a view defined using the asterisk in the select list will not consider any columns added to the underlying tables after the view was created.


[ Top of Page | Previous Page | Next Page ]