Home | Previous Page | Next Page  

Contents

Introduction
In This Introduction
About This Manual
Types of Users
Software Dependencies
Assumptions About Your Locale
Demonstration Databases
New Features
Version 10.0 Enhancements
Version 9.4 Enhancements
Documentation Conventions
Typographical Conventions
Feature, Product, and Platform
Syntax Diagrams
Example Code Conventions
Additional Documentation
Installation Guides
Online Notes
Informix Error Messages
Manuals
Online Help
Accessibility
IBM Informix Dynamic Server Version 10.0 and CSDK Version 2.90 Documentation Set
Compliance with Industry Standards
IBM Welcomes Your Comments
Extending the Database Server
In This Chapter
Creating User-Defined Routines
Extending Built-In Data Types
Extending Operators
Building Opaque Data Types
Extending Operator Classes
Routine Management
Using a User-Defined Routine
In This Chapter
User-Defined Routines
SPL Routines
External-Language Routines
Information About User-Defined Routines
Tasks That You Can Perform with User-Defined Routines
Extending Data Type Support
Supporting User-Defined Data Types
Creating an End-User Routine
Invoking a User-Defined Routine
Running a User-Defined Routine
In This Chapter
Invoking a UDR in an SQL Statement
Invoking a UDR with an EXECUTE Statement
Invoking a User-Defined Function in an Expression
Invoking a Function That Is Bound to an Operator
Named Parameters and UDRs
Invoking a UDR in an SPL Routine
Executing a User-Defined Routine
Parsing the SQL Statement
Optimizing the SQL Statement
Executing a UDR Across Databases of the Same Database Server Instance
Executing the Routine
Understanding Routine Resolution
The Routine Signature
Overloading Routines
The Routine-Resolution Process
Routine Resolution with User-Defined Data Types
Null Arguments in Overloaded Routines
Developing a User-Defined Routine
In This Chapter
Planning the Routine
Naming the Routine
Defining Routine Parameters
Returning Values
Naming Return Parameters
Using an Iterator Function
Adhering to Coding Standards
Writing the Routine
Registering a User-Defined Routine
Setting Privileges for a Routine
Creating an SPL Routine
Creating an External-Language Routine
Reviewing Information about User-Defined Routines
Using a UDR With HDR
Extending Data Types
In This Chapter
Understanding the Data Type System
Understanding Data Types
Built-In Data Types
Extended Data Types
Extending the Data Type System
Operations
Casts
Operator Classes
Optimizer Information
Extending Operators and Built-In Functions
In This Chapter
Operators and Operator Functions
Arithmetic Operators
Text Operators
Relational Operators
Overloading an Operator Function
Built-In Functions
Built-In Functions That You Can Overload
Built-In Functions That You Cannot Overload
Overloading a Built-In Function
Creating User-Defined Casts
In This Chapter
Understanding Casts
Built-In Casts
User-Defined Casts
Casts That You Cannot Create
Creating a User-Defined Cast
Choosing the Kind of User-Defined Cast
Choosing the Cast Mechanism
Defining the Direction of the Cast
Dropping a Cast
Creating User-Defined Aggregates
In This Chapter
Extending Existing Aggregates
Overloading Operators for Built-In Aggregates
Extending an Aggregate
Example of Extending a Built-In Aggregate
Creating User-Defined Aggregates
Support Functions
Resolving the Support Functions
Support-Function States
Using C or Java Support Functions
Example of a User-Defined Aggregate
Managing Aggregates
Parallel Execution of Aggregates
Privileges for User-Defined Aggregates
Aggregate Information in the System Catalog
Aggregate Information from the Command Line
Dropping an Aggregate
Creating an Opaque Data Type
In This Chapter
Opaque Data Types
The Internal Structure
Support Functions
Advantages of Opaque Data Types
Creating an Opaque Data Type
Creating the Internal Structure in C
Creating UDT-to-Java Mappings
Writing and Registering the Support Functions
Registering the Opaque Data Type with the Database
Granting Privileges for an Opaque Data Type
Creating SQL-Invoked Functions
Customizing Access Methods
Using the Generic B-Tree
Using Other Access Methods
Other Operations on Opaque Data Types
Accessing an Opaque Data Type
Dropping an Opaque Data Type
Writing Support Functions
In This Chapter
Writing Support Functions
Identifying Support Functions
Choosing Function Parameters
Setting Privileges for Support Functions
Data Types for Support Functions
The LVARCHAR Data Type
The SENDRECV Data Type
Handling the External Representation
Input Support Function
Output Support Function
Handling the Internal Representation
The Send and Receive Support Functions
Performing Bulk Copies
Import and Export Support Functions
Importbinary and Exportbinary Support Functions
The Stream Support Functions
Inserting and Deleting Data
The assign() Function
The destroy() Function
The update() Function
The deepcopy() Function
Handling Smart Large Objects
Comparing Data
Handling Locale-Sensitive Data (GLS)
Locale-Sensitive Input and Output Support Functions
Locale-Sensitive Receive and Send Support Functions
Using Operating System Functions
Extending an Operator Class
In This Chapter
Using Operator Classes
Secondary-Access Methods
Operator Classes
Extending an Existing Operator Class
Extensions of the btree_ops Operator Class
Reasons for Extending btree_ops
Creating an Operator Class
Creating a New B-Tree Operator Class
Creating an Absolute-Value Operator Class
Defining an Operator Class for Other Secondary-Access Methods
Dropping an Operator Class
Managing a User-Defined Routine
In This Chapter
Assigning the Execute Privilege to a Routine
Granting and Revoking the Execute Privilege
Privileges on Objects Associated with a UDR
Executing a UDR as DBA
Using DBA Privileges with Objects and Nested UDRs
Modifying a User-Defined Routine
Modifying a C UDR
Modifying a Java UDR
Altering a User-Defined Routine
Dropping a User-Defined Routine
Improving UDR Performance
In This Chapter
Optimizing a User-Defined Routine
Optimizing an SPL Routine
Updating Statistics for an SPL Routine
Optimizing Functions in SQL Statements
Calculating the Query Plan
Specifying Cost and Selectivity
Calculating Cost
Selectivity and Cost Examples
Extending UPDATE STATISTICS
Using UPDATE STATISTICS
Support Functions for UPDATE STATISTICS
Using Negator Functions
Using a Virtual-Processor Class
Choosing a Virtual-Processor Class
Using Virtual Processors with UDRs Written in C
Managing Virtual Processors
Parallel UDRs
Executing UDRs in Parallel
Enabling Parallel UDRs
Setting the Number of Virtual Processors
Monitoring Parallel UDRs
Memory Considerations
Memory Durations for C UDRs
Stack-Size Considerations (Ext)
Virtual-Memory Cache for Routines
I/O Considerations
Isolating System Catalog Tables
Balancing the I/O Activities
Appendix. Accessibility
Dotted Decimal Syntax Diagrams
Notices
Trademarks
Index
Home | [ Top of Page | Previous Page | Next Page | Contents | Index ]