# ==== Purpose ==== # # Extract the epoch values from SHOW ENGINE NDB STATUS. # # ==== Usage ==== # # --source include/get_ndb_epochs.inc # --echo $ndb_latest_epoch # --echo $ndb_latest_trans_epoch # --echo $ndb_latest_received_binlog_epoch # --echo $ndb_latest_handled_binlog_epoch # --echo $ndb_latest_applied_binlog_epoch # # ==== Parameters ==== # # $ndb_status_binlog_row # The row number of the output of SHOW ENGINE NDB STATUS # last was seen. # No need to set explictly, but used between sourcing this # include file several times, since it is highly probable # (but not certain) that same row number also applies next # time. if (!$ndb_status_binlog_row) { let $ndb_status_binlog_row = 1; } # Try two times, in case the row number of binlog state changes # between two invocations of SHOW ENGINE NDB STATUS. let $attempts= 2; while ($attempts) { let $q= query_get_value(SHOW ENGINE NDB STATUS, Status, $ndb_status_binlog_row); if ( `SELECT '$q' = 'No such row'` ) { dec $attempts; if (!$attempts) { echo ERROR IN TEST: No binlog row found in SHOW ENGINE NDB STATUS; die ERROR IN TEST: No binlog row found in SHOW ENGINE NDB STATUS; } # row will be increased to 1 further down let $ndb_status_binlog_row = 0; } if (`SELECT INSTR('$q', 'latest_epoch=')`) { let $attempts = 0 ; } if ($attempts) { inc $ndb_status_binlog_row; } } let $ndb_latest_epoch= `SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING('$q', INSTR('$q', 'latest_epoch=')), ',', 1), '=', -1)`; let $ndb_latest_trans_epoch= `SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING('$q', INSTR('$q', 'latest_trans_epoch=')), ',', 1), '=', -1)`; let $ndb_latest_received_binlog_epoch= `SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING('$q', INSTR('$q', 'latest_received_binlog_epoch=')), ',', 1), '=', -1)`; let $ndb_latest_handled_binlog_epoch= `SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING('$q', INSTR('$q', 'latest_handled_binlog_epoch=')), ',', 1), '=', -1)`; let $ndb_latest_applied_binlog_epoch= `SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING('$q', INSTR('$q', 'latest_applied_binlog_epoch=')), ',', 1), '=', -1)`;