github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/cli/interactive_tests/test_sql_safe_updates.tcl (about)

     1  #! /usr/bin/env expect -f
     2  
     3  source [file join [file dirname $argv0] common.tcl]
     4  
     5  start_server $argv
     6  
     7  spawn /bin/bash
     8  send "PS1=':''/# '\r"
     9  eexpect ":/# "
    10  
    11  start_test "Check that dangerous statements are properly rejected when running interactively with terminal output."
    12  send "$argv sql\r"
    13  eexpect root@
    14  send "create database d;\rcreate table d.t(x int);\r"
    15  eexpect "CREATE"
    16  eexpect "CREATE"
    17  eexpect root@
    18  
    19  send "delete from d.t;\r"
    20  eexpect "rejected: DELETE without WHERE clause (sql_safe_updates = true)"
    21  eexpect root@
    22  end_test
    23  
    24  send "\\q\r"
    25  eexpect ":/# "
    26  
    27  start_test "Check that dangerous statements are properly rejected when inputting from user even with output redirected."
    28  send "$argv sql | cat\r"
    29  # We can't immediately send input, because the shell will eat stdin just before it's ready.
    30  eexpect "brief introduction"
    31  sleep 0.4
    32  send "show sql_safe_updates;\r"
    33  eexpect "on"
    34  eexpect "\r\n"
    35  send "delete from d.t;\r"
    36  eexpect "rejected: DELETE without WHERE clause (sql_safe_updates = true)"
    37  send "\\q\r"
    38  eexpect ":/# "
    39  end_test
    40  
    41  start_test "Check that dangerous statements are not rejected when input redirected."
    42  send "echo 'delete from d.t;' | $argv sql \r"
    43  eexpect "DELETE"
    44  eexpect ":/# "
    45  end_test
    46  
    47  start_test "Check that dangerous statements are not rejected when using -e."
    48  send "$argv sql -e 'delete from d.t'\r"
    49  eexpect "DELETE"
    50  eexpect ":/# "
    51  end_test
    52  
    53  start_test "Check that dangerous statements are properly rejected when using --safe-updates -e."
    54  send "$argv sql --safe-updates -e 'delete from d.t'\r"
    55  eexpect "rejected: DELETE without WHERE clause"
    56  eexpect ":/# "
    57  end_test
    58  
    59  stop_server $argv