Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/MariaDB/mysql-test/suite/storage_engine/   (MariaDB Server Version 8.1-8.4©)  Datei vom 1.9.2026 mit Größe 4 kB image not shown  

Quelle  repair_table.inc   Sprache: Delphi

 

# 
# REPAIR TABLE statements
#
# Note: the output is likely to be different for the engine under test,
# in which case rdiff will be needed. Or, the output might say that
# the storage engine does not support REPAIR.
#

--disable_warnings
DROP TABLE IF EXISTS t1,t2;
--enable_warnings

--source create_table.inc
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
--let $table_name = t2
--source create_table.inc

REPAIR TABLE t1;
if ($mysql_errname)
{
  --source unexpected_result.inc
}
INSERT INTO t1 (a,b) VALUES (3,'c');
INSERT INTO t2 (a,b) VALUES (4,'d');
REPAIR NO_WRITE_TO_BINLOG TABLE t1, t2;
INSERT INTO t2 (a,b) VALUES (5,'e'),(6,'f');
REPAIR LOCAL TABLE t2;
INSERT INTO t1 (a,b) VALUES (7,'g'),(8,'h');
INSERT INTO t2 (a,b) VALUES (9,'i');
REPAIR LOCAL TABLE t2, t1 EXTENDED;
INSERT INTO t1 (a,b) VALUES (10,'j');
INSERT INTO t2 (a,b) VALUES (11,'k');
REPAIR TABLE t1, t2 QUICK USE_FRM;
INSERT INTO t1 (a,b) VALUES (12,'l');
INSERT INTO t2 (a,b) VALUES (13,'m');
REPAIR NO_WRITE_TO_BINLOG TABLE t1, t2 QUICK EXTENDED USE_FRM;
FLUSH TABLE t1;

let my_datadir = `SELECT @@datadir`;

# Now we'll override all table files except for frm.
# Some engines are more enduring to table files corruption
# than others, so the result of the following INSERT and REPAIR
# will be different for different engines

--perl
@files = glob "$ENV{my_datadir}/test/t1.*";
foreach (@files)
{
  next if /.frm$/;
  rename($_,"$_.save");
  open(FILE,">$_") || print "Could not open $_\n" && exit;
  print FILE "";
  close(FILE);
}
EOF

# We don't worry so much about the INSERT or SELECT result,
# it's REPAIR that we are after. 
# The preceding INSERT, however, helps to trigger 
# a bit more internals
--let $error_codes = 0,130,ER_FAILED_READ_FROM_PAR_FILE,ER_OPEN_AS_READONLY
INSERT INTO t1 (a,b) VALUES (14,'n');
--source check_errors.inc
CHECK TABLE t1;
--let $error_codes = 0,130,ER_FAILED_READ_FROM_PAR_FILE,ER_OPEN_AS_READONLY
SELECT a,b FROM t1;
--source check_errors.inc
--enable_warnings
REPAIR TABLE t1;

--perl
@files = glob "$ENV{my_datadir}/test/t1.*.save";
foreach (@files)
{
  $nm = $_;
  $nm =~ s/\.save$//;
  rename($_,$nm);
}
EOF

DROP TABLE t1, t2;

--let $continue = 1
--source have_default_index.inc

if ($have_default_index)
{
  call mtr.add_suppression("Got an error from thread_id=.*");
  call mtr.add_suppression("MariaDB thread id .*, query id .* localhost.*root Checking table");
  call mtr.add_suppression(" '\..test.t1'");
  call mtr.add_suppression("Couldn't repair table: test.t1");

  # In 10.2 with log_warnings=2 the error message is printed to the error log
  call mtr.add_suppression("Table 't1' is marked as crashed.*");

  --let $create_definition = a $int_indexed_col, b $char_col, $default_index (a)
  --source create_table.inc
  REPAIR TABLE t1;
  INSERT INTO t1 (a,b) VALUES (7,'g'),(8,'h');
  REPAIR TABLE t1 EXTENDED;
  INSERT INTO t1 (a,b) VALUES (10,'j');
  REPAIR TABLE t1 USE_FRM;

  # We will take files one by one (except for frm file),
  # save the file, update the table, then restore the file
  # and check the table.
  # Results here can be very different depending on the engine.

  let $my_errno = 0;

  --list_files $my_datadir/test

  while (!$my_errno)
  {
    --error 0,2
    --perl 
    use File::Copy;
    @files = glob "$ENV{my_datadir}/test/t1*";
    foreach (@files)
    {
      next if /.(?:frm|save|done)$/;
      next if -e "$_.done";
      copy($_,"$_.save");
      exit 0;
    }
    # No more files
    exit 2;
  EOF
    let $my_errno = $errno;
    if (!$my_errno)
    {
      --let $error_codes = 0,144
      INSERT INTO t1 (a,b) VALUES (14,'n'),(15,'o');
      --source check_errors.inc
      FLUSH TABLE t1;
      --replace_result $my_datadir <DATADIR>
      --perl
      use File::Copy;
      @files = glob "$ENV{my_datadir}/test/t1*.save";
      $nm = $files[0]; 
      $nm =~ s/\.save$//;
      print "Restoring $nm\n";
      copy($files[0],"$nm.done");
      rename($files[0],$nm);
  EOF
      CHECK TABLE t1;
      --let $error_codes = 0,ER_NOT_KEYFILE,144
      SELECT a,b FROM t1;
      --source check_errors.inc
    }
  }
  DROP TABLE t1;
}

--remove_files_wildcard $my_datadir/test t1*



Messung V0.5 in Prozent
C=99 H=78 G=88

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet am  2026-10-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.