function sig_handler($signo) { switch ($signo) { case SIGTERM: case SIGHUP: die1(0); } }
function sig_handler($signo) { global $cdc; switch ($signo) { case SIGTERM: case SIGHUP: case SIGINT: FlexCDC::shutdown_plugins($cdc); die1(0); } }
function create_mvlog($v_schema_name, $v_table_name) { $v_done = FALSE; $v_column_name = NULL; $v_data_type = NULL; $v_sql = NULL; $cursor_sql = "SELECT COLUMN_NAME, IF(COLUMN_TYPE='TIMESTAMP', 'TIMESTAMP', COLUMN_TYPE) COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='{$v_table_name}' AND TABLE_SCHEMA = '{$v_schema_name}'"; $cur_columns = my_mysql_query($cursor_sql, $this->source); $v_sql = ''; while (1) { if ($v_sql != '') { $v_sql = FlexCDC::concat($v_sql, ', '); } $row = mysql_fetch_array($cur_columns); if ($row === false) { $v_done = true; } if ($row) { $v_column_name = '`' . $row[0] . '`'; $v_data_type = $row[1]; } if ($v_done) { mysql_free_result($cur_columns); break; } $v_sql = FlexCDC::concat($v_sql, $v_column_name, ' ', $v_data_type); } if (trim($v_sql) == "") { trigger_error('Could not access table:' . $v_table_name, E_USER_ERROR); } $v_sql = FlexCDC::concat('CREATE TABLE IF NOT EXISTS`', $this->mvlogDB, '`.`', $v_schema_name, '_', $v_table_name, '` ( dml_type INT DEFAULT 0, uow_id BIGINT, `fv$server_id` INT UNSIGNED,fv$gsn bigint, ', $v_sql, 'KEY(uow_id, dml_type) ) ENGINE=INNODB'); $create_stmt = my_mysql_query($v_sql, $this->dest); if (!$create_stmt) { die1('COULD NOT CREATE MVLOG. ' . $v_sql . "\n"); } $exec_sql = " INSERT IGNORE INTO `" . $this->mvlogDB . "`.`" . $this->mvlogs . "`( table_schema , table_name , mvlog_name ) values('{$v_schema_name}', '{$v_table_name}', '" . $v_schema_name . "_" . $v_table_name . "')"; my_mysql_query($exec_sql) or die1($exec_sql . ':' . mysql_error($this->dest) . "\n"); return true; }
protected function read_mysql_type(&$col_info) { $data_type = $col_info->type; $metadata = $col_info->metadata; $m =& $this->data_types; #echo "READ_MYSQL_TYPE: " . $this->data_type_map[$data_type] . "\n"; switch ($data_type) { case $m['tiny']: return $this->read(1); case $m['short']: return $this->read(2); case $m['int24']: return $this->read(3); case $m['long']: $d = $this->read(4); #ECHO "LONG: " . $this->cast($d) . "\n"; return $d; case $m['longlong']: return $this->read(8); case $m['float']: return $this->read(4); case $m['double']: return $this->read(8); case $m['string']: case $m['var_string']: return $this->read_varstring(); case $m['varchar']: return $this->read_lpstring($metadata->max_length > 255 ? 2 : 1); case $m['blob']: case $m['geometry']: return $this->read_lpstring($metadata->length_size); case $m['timestamp']: return $this->read(4); case $m['year']: return $this->read(1); case $m['date']: case $m['time']: return $this->read(3); case $m['datetime']: return $this->read(8); case $m['enum']: case $m['set']: return $this->read($metadata->size); case $m['bit']: return $this->read_bit_array($metadata->bits); case $m['newdecimal']: return $this->read_newdecimal($metadata->precision, $metadata->scale); default: die1("DO NOT KNOW HOW TO READ TYPE: {$data_type}\n"); } return false; }