Esempio n. 1
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;
 }