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