Materialized and Non-Materialized Sequences

The term materialized is used to indicate a sequence that results from a database query. Sequences that are the result of operations on other sequences are typically non-materialized. Some analytics operations such as append and search can only be performed on materialized sequences. The following sections illustrate the use of materialized and non-materialized sequences for different native language APIs.

C API

In the following code snippet the sequence iterator close_iterator manages a materialized sequence because it is extracted from a "row" of the "result set" cursor quote_cursor; whereas max_iterator is the non-materialized result sequence of the grid aggregate max operation:

 
    mco_trans_h trans;
    mco_cursor_t quote_cursor;
    Quote quote;
    mco_seq_iterator_t close_iterator, max_iterator;
    MCO_RET rc;
 
    mco_trans_start(db, MCO_READ_ONLY, MCO_TRANS_FOREGROUND, &trans);
     
    Quote_by_sym_index_cursor(trans, &quote_cursor);
    for (rc = mco_cursor_first(trans, &quote_cursor); 
        rc != MCO_S_CURSOR_END;
         rc = mco_cursor_next(trans, &quote_cursor)) 
    {
        /* Get current object */
        Quote_from_cursor(trans, &quote_cursor, &quote);
 
        /* Materialize the close iterator */
        Quote_close_iterator(&quote, &close_iterator);
                
         
        /* Produce the non-materialized max sequence */
        rc = mco_seq_grid_agg_max_float(&max_iterator, &close_iterator, 7);
        ...
    }
    rc = mco_trans_commit(trans);
 

Python

In the following code snippet the sequence iterator quote.close manages a materialized sequence because it is extracted from a "row" of the "result set" Quote cursor; whereas maxit is the non-materialized result sequence of the grid aggregate max operation:

 
    con.startTransaction(exdb.Transaction.MCO_READ_ONLY)
    cursor = con.cursor("Quote", "by_sym")
    for quote in cursor:
        # Produce the non-materialized max sequence from materialized sequence quote.close
        maxit = quote.close.grid_agg_max(7)
                
        ...
    con.commit()