The mi_scan_projs() accessor function
The mi_scan_projs() function identifies each column that the Projection clause of a query specifies.
Syntax
mi_smallint * mi_scan_projs(MI_AM_SCAN_DESC *scanDesc)
- scanDesc
- Points to the scan descriptor.
Usage
Use the return value from mi_scan_nprojs() to determine the number of times to execute mi_scan_projs(). Then use mi_scan_projs() to identify columns that the return row must contain.
A qualification identifies a column
by a number that locates the column in the row descriptor. The number 0 indicates
the first column in the row descriptor. In the following example, mi_scan_projs() points
to the values 1, 5, and 4:
SELECT column1, column5, column4 FROM table
The
row descriptor describes the columns in the order that they appear
in the CREATE TABLE statement. The following example shows how to
determine the data type of each projected column:
MI_TYPE_DESC *typedesc;
MI_AM_TABLE_DESC*td;
MI_ROW_DESC *rd;
MI_AM_SCAN_DESC*sd;
mi_integer n;
mi_smallint c, *projcols; /* column identifiers */
rd = mi_tab_rowdesc(td); /* describes a table row*/
n = mi_scan_nprojs(sd); /*How many columns are projected?*/
projcols=mi_scan_projs(sd);/* identifies projected columns*/
for (int i = 0; i < n; i++)
{
c = projcols[i]; /* Get offset to row descriptor.*/
/* Get data type for projected column. For example
** my_data->col_type[c] = mi_column_typedesc(rd, c) */
}
Tip: Because the access method needs to return
data for only the columns that make up the projection, the access
method can put a NULL value in the remaining columns. Eliminate unnecessary
column data to improve performance and reduce the resources that the
database server allocates to format and store the returned rows.
Return values
Each of the small integers in the array that this function returns identifies a column by the position of that column in the row descriptor.
Related topics
See the description of:
- The mi_column_* group of DataBlade API functions and the row descriptor (MI_ROW_DESC data structure) in the HCL Informix® DataBlade API Programmer's Guide