~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/cursor.h

* Completes the blueprint for splitting the XA Resource Manager
  API from the storage engine API:

We add a new plugin::XaResourceManager abstract interface class
which exposes the X/Open XA distributed transaction protocol for
resource managers.

We add a new plugin::MonitoredInTransaction base class from
which all plugins that need monitored by Drizzle's transaction
manager (drizzled::TransactionServices component) derive.

All plugin::StorageEngine's now derive from plugin::MonitoredInTransaction
since all storage engines a monitored by the transaction manager
and the Session keeps a "slot" available for keeping the engine's
per-session data state.  In a future patch, the transaction log's
XaApplier plugin will also derive from MonitoredInTransaction, as
the transaction log, in XA mode, is also monitored by Drizzle's
transaction manager and automatically enlisted in XA transactions.

* Updates all documentation in /drizzled/transaction_services.cc
  to accurately reflect Drizzle's new transaction management
  process and explicit transaction and statement boundaries.

* Kills off dead code:

  binlog_format_names
  ha_init()
  total_ha, total_ha_2pc (no longer necessary, as the above-mentioned
  abstract base classes provide all of this functionality)
  StorageEngine::slot (now plugin::MonitoredInTransaction::getId())
  TransactionalStorageEngine::two_phase_commit (same as above)

Show diffs side-by-side

added added

removed removed

Lines of Context:
673
673
};
674
674
 
675
675
extern const char *ha_row_type[];
676
 
extern const char *binlog_format_names[];
677
 
extern uint32_t total_ha, total_ha_2pc;
678
676
 
679
677
/* basic stuff */
680
678
int ha_init_errors(void);
681
 
int ha_init(void);
682
679
int ha_end(void);
683
680
 
684
 
/*
685
 
  Storage engine has to assume the transaction will end up with 2pc if
686
 
   - there is more than one 2pc-capable storage engine available
687
 
   - in the current transaction 2pc was not disabled yet
688
 
*/
689
 
#define trans_need_2pc(session, all)                   ((total_ha_2pc > 1) && \
690
 
        !((all ? &session->transaction.all : &session->transaction.stmt)->no_2pc))
691
 
 
692
 
 
693
681
SORT_FIELD * make_unireg_sortorder(order_st *order, uint32_t *length,
694
682
                                   SORT_FIELD *sortorder);
695
683
int setup_order(Session *session, Item **ref_pointer_array, TableList *tables,