@log_unlike = @{ $params{log_unlike} };
    }
 
-   if (@log_like or @log_unlike)
-   {
-       # Don't let previous log entries match for this connection.
-       # On Windows, the truncation would not work, so rotate the log
-       # file before restarting the server afresh.
-       if ($TestLib::windows_os)
-       {
-           $self->rotate_logfile;
-           $self->restart;
-       }
-       else
-       {
-           truncate $self->logfile, 0;
-       }
-   }
+   my $log_location = -s $self->logfile;
 
    # Never prompt for a password, any callers of this routine should
    # have set up things properly, and this should not block.
    }
    if (@log_like or @log_unlike)
    {
-       my $log_contents = TestLib::slurp_file($self->logfile);
+       my $log_contents = TestLib::slurp_file($self->logfile,
+                              $log_location);
 
        while (my $regex = shift @log_like)
        {
        @log_unlike = @{ $params{log_unlike} };
    }
 
-   if (@log_like or @log_unlike)
-   {
-       # Don't let previous log entries match for this connection.
-       # On Windows, the truncation would not work, so rotate the log
-       # file before restarting the server afresh.
-       if ($TestLib::windows_os)
-       {
-           $self->rotate_logfile;
-           $self->restart;
-       }
-       else
-       {
-           truncate $self->logfile, 0;
-       }
-   }
+   my $log_location = -s $self->logfile;
 
    # Never prompt for a password, any callers of this routine should
    # have set up things properly, and this should not block.
 
    if (@log_like or @log_unlike)
    {
-       my $log_contents = TestLib::slurp_file($self->logfile);
+       my $log_contents = TestLib::slurp_file($self->logfile,
+                              $log_location);
 
        while (my $regex = shift @log_like)
        {
 Run a command on the node, then verify that $expected_sql appears in the
 server log file.
 
-Reads the whole log file so be careful when working with large log outputs.
-The log file is truncated prior to running the command, however.
-
 =cut
 
 sub issues_sql_like
 
    local %ENV = $self->_get_env();
 
-   truncate $self->logfile, 0;
+   my $log_location = -s $self->logfile;
+
    my $result = TestLib::run_log($cmd);
    ok($result, "@$cmd exit code 0");
-   my $log = TestLib::slurp_file($self->logfile);
+   my $log = TestLib::slurp_file($self->logfile, $log_location);
    like($log, $expected_sql, "$test_name: SQL found in server log");
    return;
 }
 
 use Config;
 use Cwd;
 use Exporter 'import';
-use Fcntl qw(:mode);
+use Fcntl qw(:mode :seek);
 use File::Basename;
 use File::Find;
 use File::Spec;
    if ($windows_os)
    {
        require Win32API::File;
-       Win32API::File->import(qw(createFile OsFHandleOpen CloseHandle));
+       Win32API::File->import(qw(createFile OsFHandleOpen CloseHandle setFilePointer));
    }
 
    # Specifies whether to use Unix sockets for test setups.  On
 
 =pod
 
-=item slurp_file(filename)
+=item slurp_file(filename [, $offset])
 
-Return the full contents of the specified file.
+Return the full contents of the specified file, beginning from an
+offset position if specified.
 
 =cut
 
 sub slurp_file
 {
-   my ($filename) = @_;
+   my ($filename, $offset) = @_;
    local $/;
    my $contents;
    if ($Config{osname} ne 'MSWin32')
    {
        open(my $in, '<', $filename)
          or croak "could not read \"$filename\": $!";
+       if (defined($offset))
+       {
+           seek($in, $offset, SEEK_SET)
+             or croak "could not seek \"$filename\": $!";
+       }
        $contents = <$in>;
        close $in;
    }
          or croak "could not open \"$filename\": $^E";
        OsFHandleOpen(my $fh = IO::Handle->new(), $fHandle, 'r')
          or croak "could not read \"$filename\": $^E\n";
+       if (defined($offset))
+       {
+           setFilePointer($fh, $offset, qw(FILE_BEGIN))
+             or croak "could not seek \"$filename\": $^E\n";
+       }
        $contents = <$fh>;
        CloseHandle($fHandle)
          or croak "could not close \"$filename\": $^E\n";