    # File lib/amalgalite/database.rb, line 617
        def savepoint( name )
          point_name = name.to_s.strip
          raise Amalgalite::Error, "Invalid savepoint name '#{name}'" unless point_name and point_name.length > 1
          execute( "SAVEPOINT #{point_name};")
          if block_given? then
            begin
              return ( yield self )
            ensure
              if $! then
                rollback_to( point_name )
                raise $!
              else
                release( point_name )
              end
            end
          else
            return in_transaction?
          end
        end