rsql 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/rsql +19 -2
- data/lib/rsql.rb +1 -1
- data/lib/rsql/commands.rb +2 -2
- data/lib/rsql/eval_context.rb +7 -7
- data/lib/rsql/mysql_results.rb +1 -1
- data/test/test_commands.rb +2 -2
- data/test/test_eval_context.rb +2 -1
- metadata +4 -4
    
        data/bin/rsql
    CHANGED
    
    | @@ -428,6 +428,18 @@ Signal.trap('INT') do | |
| 428 428 | 
             
                cmd_thread.kill
         | 
| 429 429 | 
             
            end
         | 
| 430 430 |  | 
| 431 | 
            +
            Signal.trap('CHLD') do
         | 
| 432 | 
            +
                $stderr.puts "SSH child (#{ssh_pid}) stopped--shutting down..."
         | 
| 433 | 
            +
                if cmd_thread[:running] && MySQLResults.conn
         | 
| 434 | 
            +
                    $stderr.puts 'Interrupting MySQL query...'
         | 
| 435 | 
            +
                    safe_timeout(MySQLResults.conn, :close, 'MySQL')
         | 
| 436 | 
            +
                    MySQLResults.conn = nil
         | 
| 437 | 
            +
                end
         | 
| 438 | 
            +
                cmd_thread[:shutdown] = true
         | 
| 439 | 
            +
                sleep(0.3)
         | 
| 440 | 
            +
                cmd_thread.kill
         | 
| 441 | 
            +
            end
         | 
| 442 | 
            +
             | 
| 431 443 | 
             
            begin
         | 
| 432 444 | 
             
                cmd_thread.join
         | 
| 433 445 | 
             
            rescue Exception => ex
         | 
| @@ -451,6 +463,11 @@ if Readline::HISTORY.any? | |
| 451 463 | 
             
            end
         | 
| 452 464 |  | 
| 453 465 | 
             
            if ssh_pid && 0 <= ssh_pid
         | 
| 454 | 
            -
                 | 
| 455 | 
            -
             | 
| 466 | 
            +
                begin
         | 
| 467 | 
            +
                    Process.kill('INT', ssh_pid)
         | 
| 468 | 
            +
                    Process.waitpid(ssh_pid)
         | 
| 469 | 
            +
                rescue Exception => ex
         | 
| 470 | 
            +
                    $stderr.puts ex.message
         | 
| 471 | 
            +
                    $stderr.puts ex.backtrace if verbose
         | 
| 472 | 
            +
                end
         | 
| 456 473 | 
             
            end
         | 
    
        data/lib/rsql.rb
    CHANGED
    
    
    
        data/lib/rsql/commands.rb
    CHANGED
    
    | @@ -64,7 +64,7 @@ module RSQL | |
| 64 64 | 
             
                                sep = nil
         | 
| 65 65 | 
             
                            end
         | 
| 66 66 |  | 
| 67 | 
            -
                             | 
| 67 | 
            +
                            unless esc.empty?
         | 
| 68 68 | 
             
                                esc << match
         | 
| 69 69 | 
             
                                match = esc
         | 
| 70 70 | 
             
                                esc = ''
         | 
| @@ -177,7 +177,7 @@ module RSQL | |
| 177 177 | 
             
                                displayer = @default_displayer
         | 
| 178 178 | 
             
                            end
         | 
| 179 179 |  | 
| 180 | 
            -
                             | 
| 180 | 
            +
                            unless content.empty?
         | 
| 181 181 | 
             
                                @cmds << Command.new(content, bangs, declarator, displayer)
         | 
| 182 182 | 
             
                                return true
         | 
| 183 183 | 
             
                            end
         | 
    
        data/lib/rsql/eval_context.rb
    CHANGED
    
    | @@ -100,7 +100,6 @@ module RSQL | |
| 100 100 | 
             
                    end
         | 
| 101 101 |  | 
| 102 102 | 
             
                    def reload
         | 
| 103 | 
            -
                        MySQLResults.reset_cache
         | 
| 104 103 | 
             
                        @loaded_fns.each{|fn| self.load(fn, false)}
         | 
| 105 104 | 
             
                        puts "loaded: #{@loaded_fns.inspect}"
         | 
| 106 105 | 
             
                    end
         | 
| @@ -108,7 +107,7 @@ module RSQL | |
| 108 107 | 
             
                    def bang_eval(field, val)
         | 
| 109 108 | 
             
                        if bang = @bangs[field]
         | 
| 110 109 | 
             
                            begin
         | 
| 111 | 
            -
                                val = Thread.new{ eval(" | 
| 110 | 
            +
                                val = Thread.new{ eval("#{bang}(val)") }.value
         | 
| 112 111 | 
             
                            rescue Exception => ex
         | 
| 113 112 | 
             
                                $stderr.puts(ex.message, ex.backtrace.first)
         | 
| 114 113 | 
             
                            end
         | 
| @@ -153,7 +152,7 @@ module RSQL | |
| 153 152 | 
             
                            # that we have file/line info, we need to rescue their
         | 
| 154 153 | 
             
                            # exceptions inside the evaluation
         | 
| 155 154 | 
             
                            th = Thread.new do
         | 
| 156 | 
            -
                                eval(' | 
| 155 | 
            +
                                eval('begin;' << content << %q{
         | 
| 157 156 | 
             
                                  rescue Exception => ex
         | 
| 158 157 | 
             
                                    if @verbose
         | 
| 159 158 | 
             
                                        $stderr.puts("#{ex.class}: #{ex.message}", ex.backtrace)
         | 
| @@ -223,7 +222,7 @@ module RSQL | |
| 223 222 | 
             
                                end
         | 
| 224 223 | 
             
                                limit -= 1
         | 
| 225 224 | 
             
                            end
         | 
| 226 | 
            -
                            '%02x' % ch | 
| 225 | 
            +
                            '%02x' % ch.bytes.first
         | 
| 227 226 | 
             
                        end
         | 
| 228 227 |  | 
| 229 228 | 
             
                        if limit && limit < 1 && 0 < cnt
         | 
| @@ -358,13 +357,14 @@ module RSQL | |
| 358 357 | 
             
                                        next unless ending || i == lineno
         | 
| 359 358 | 
             
                                        source << line
         | 
| 360 359 | 
             
                                        unless ending
         | 
| 361 | 
            -
                                            unless m = line.match(/\{|do/)
         | 
| 360 | 
            +
                                            unless m = line.match(/\{|do\b/)
         | 
| 362 361 | 
             
                                                $stderr.puts "unable to locate block beginning at #{fn}:#{lineno}"
         | 
| 363 362 | 
             
                                                return
         | 
| 364 363 | 
             
                                            end
         | 
| 365 364 | 
             
                                            ending = m[0] == '{' ? '\}' : 'end'
         | 
| 366 365 | 
             
                                            next
         | 
| 367 366 | 
             
                                        end
         | 
| 367 | 
            +
             | 
| 368 368 | 
             
                                        if m = line.match(/^#{ending}/)
         | 
| 369 369 | 
             
                                            found = true
         | 
| 370 370 | 
             
                                            break
         | 
| @@ -379,7 +379,7 @@ module RSQL | |
| 379 379 | 
             
                                end
         | 
| 380 380 | 
             
                            end
         | 
| 381 381 |  | 
| 382 | 
            -
                            if reg.source && reg.source. | 
| 382 | 
            +
                            if reg.source && !reg.source.empty?
         | 
| 383 383 | 
             
                                puts reg.source
         | 
| 384 384 | 
             
                            else
         | 
| 385 385 | 
             
                                $stderr.puts "unable to locate body for #{sym}"
         | 
| @@ -440,7 +440,7 @@ module RSQL | |
| 440 440 | 
             
                                argstr = args.join(',')
         | 
| 441 441 | 
             
                                usage << "(#{argstr})" unless argstr.empty?
         | 
| 442 442 |  | 
| 443 | 
            -
                                blockstr = %{ | 
| 443 | 
            +
                                blockstr = %{lambda{|#{argstr}|%{#{sql}} % [#{argstr}]}}
         | 
| 444 444 | 
             
                                block = Thread.new{ eval(blockstr) }.value
         | 
| 445 445 | 
             
                                args = []
         | 
| 446 446 | 
             
                            else
         | 
    
        data/lib/rsql/mysql_results.rb
    CHANGED
    
    | @@ -260,7 +260,7 @@ module RSQL | |
| 260 260 | 
             
                        # we set this here so that (a) it occurs _after_ we are
         | 
| 261 261 | 
             
                        # successful and so we can show an appropriate messge in a
         | 
| 262 262 | 
             
                        # displayer
         | 
| 263 | 
            -
                        if @sql.match(/use\s+(\S+)/)
         | 
| 263 | 
            +
                        if @sql.match(/use\s+(\S+)/i)
         | 
| 264 264 | 
             
                            @database_changed = true
         | 
| 265 265 | 
             
                            @@database_name = $1
         | 
| 266 266 | 
             
                        end
         | 
    
        data/test/test_commands.rb
    CHANGED
    
    | @@ -53,7 +53,7 @@ class TestCommands < Test::Unit::TestCase | |
| 53 53 |  | 
| 54 54 | 
             
                    # make sure our logic to handle eval'd blocks with args works
         | 
| 55 55 | 
             
                    @strout.string = ''
         | 
| 56 | 
            -
                    cmds = Commands.new('. Proc.new{|a|  | 
| 56 | 
            +
                    cmds = Commands.new('. Proc.new{|a| puts a.inspect} | @results.value.call(:fancy)', :display_by_column)
         | 
| 57 57 | 
             
                    cmds.run!(@ctx)
         | 
| 58 58 | 
             
                    assert_equal(':fancy', @strout.string.chomp)
         | 
| 59 59 | 
             
                end
         | 
| @@ -61,7 +61,7 @@ class TestCommands < Test::Unit::TestCase | |
| 61 61 | 
             
                def test_multiple
         | 
| 62 62 | 
             
                    @conn.expects(:query).with('one thing').returns(nil)
         | 
| 63 63 | 
             
                    @conn.expects(:affected_rows).returns(1)
         | 
| 64 | 
            -
                    cmds = Commands.new('. "one thing" ; .  | 
| 64 | 
            +
                    cmds = Commands.new('. "one thing" ; . puts :hello.inspect', :display_by_column)
         | 
| 65 65 | 
             
                    cmds.run!(@ctx)
         | 
| 66 66 | 
             
                    assert_match(/^QueryOK,1rowaffected\(\d+.\d+sec\):hello$/,
         | 
| 67 67 | 
             
                                 @strout.string.gsub(/\s+/,''))
         | 
    
        data/test/test_eval_context.rb
    CHANGED
    
    | @@ -28,7 +28,6 @@ class TestEvalContext < Test::Unit::TestCase | |
| 28 28 | 
             
                end
         | 
| 29 29 |  | 
| 30 30 | 
             
                def test_load
         | 
| 31 | 
            -
                    @conn.expects(:list_dbs).returns([])
         | 
| 32 31 | 
             
                    orig = $stdout
         | 
| 33 32 | 
             
                    $stdout = out = StringIO.new
         | 
| 34 33 | 
             
                    @ctx.safe_eval('reload', nil, out)
         | 
| @@ -97,8 +96,10 @@ class TestEvalContext < Test::Unit::TestCase | |
| 97 96 | 
             
                    assert_equal('', out.string)
         | 
| 98 97 | 
             
                    assert_equal('refusing to describe the version method', err.string.chomp)
         | 
| 99 98 |  | 
| 99 | 
            +
                    err.string = ''
         | 
| 100 100 | 
             
                    out.string = ''
         | 
| 101 101 | 
             
                    val = @ctx.safe_eval('desc :cleanup_example', nil, out)
         | 
| 102 | 
            +
                    assert_equal('', err.string)
         | 
| 102 103 | 
             
                    assert_equal('DROP TEMPORARY TABLE IF EXISTS #{@rsql_table}', out.string.strip)
         | 
| 103 104 |  | 
| 104 105 | 
             
                    out.string = ''
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: rsql
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 17
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 8 | 
             
              - 2
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0.2. | 
| 9 | 
            +
              - 3
         | 
| 10 | 
            +
              version: 0.2.3
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Brad Robel-Forrest
         | 
| @@ -15,7 +15,7 @@ autorequire: | |
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 17 |  | 
| 18 | 
            -
            date: 2011-09- | 
| 18 | 
            +
            date: 2011-09-28 00:00:00 Z
         | 
| 19 19 | 
             
            dependencies: 
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 21 21 | 
             
              name: net-ssh
         |