• Dmitry Shulga's avatar
    Fixed bug#57450 - mysql client enter in an infinite loop · 980868eb
    Dmitry Shulga authored
    if the standard input is a directory.
    
    The problem is that mysql monitor try to read from stdin without
    checking input source type.
    
    The solution is to stop reading data from standard input if a call
    to read(2) failed.
    
    A new test case was added into mysql.test.
    
    client/my_readline.h:
      Data members error and truncated was added to LINE_BUFFER structure.
      These data members used instead of out parameters in functions
      batch_readline, intern_read_line.
    client/mysql.cc:
      read_and_execute() was modified: set status.exit_status to 1
      when the error occured while reading the next command line in
      non-interactive mode. Also the value of the truncated attribute
      of structure LINE_BUFF is taken into account only for non-iteractive mode.
    client/readline.cc:
      intern_read_line() was modified: cancel reading from input if
      fill_buffer() returns -1, e.g. if call to read failed.
      batch_readline was modified: set the error data member of LINE_BUFFER
      structure to value of my_errno when system error happened during call
      to my_read/my_realloc.
    mysql-test/t/mysql.test:
      Test for bug#57450 was added.
    980868eb
readline.cc 6.65 KB