Merge pull request #124 from crystal-lang/crystal/0.34.0

Crystal 0.34.0 support
This commit is contained in:
Brian J. Cardiff 2020-04-06 18:14:40 -03:00 committed by GitHub
commit 7543908733
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 17 deletions

View File

@ -246,6 +246,8 @@ describe DummyDriver do
rs.read(Int64, Int64).should eq({3i64, 4i64}) rs.read(Int64, Int64).should eq({3i64, 4i64})
when 1 when 1
rs.read(Int64, Int64).should eq({1i64, 2i64}) rs.read(Int64, Int64).should eq({1i64, 2i64})
else
raise "unreachable"
end end
i += 1 i += 1
end end

View File

@ -206,25 +206,38 @@ module DB
@idle.first? @idle.first?
end end
private def wait_for_available {% if compare_versions(Crystal::VERSION, "0.34.0-0") > 0 %}
timeout = TimeoutHelper.new(@checkout_timeout.to_f64) private def wait_for_available
sync_inc_waiting_resource sync_inc_waiting_resource
timeout.start select
when @availability_channel.receive
# TODO update to select keyword for crystal 0.19 sync_dec_waiting_resource
index, _ = Channel.select(@availability_channel.receive_select_action, timeout.receive_select_action) when timeout(@checkout_timeout.seconds)
case index sync_dec_waiting_resource
when 0 raise DB::PoolTimeout.new
timeout.cancel end
sync_dec_waiting_resource
when 1
sync_dec_waiting_resource
raise DB::PoolTimeout.new
else
raise DB::Error.new
end end
end {% else %}
private def wait_for_available
timeout = TimeoutHelper.new(@checkout_timeout.to_f64)
sync_inc_waiting_resource
timeout.start
index, _ = Channel.select(@availability_channel.receive_select_action, timeout.receive_select_action)
case index
when 0
timeout.cancel
sync_dec_waiting_resource
when 1
sync_dec_waiting_resource
raise DB::PoolTimeout.new
else
raise DB::Error.new
end
end
{% end %}
private def sync_inc_waiting_resource private def sync_inc_waiting_resource
sync { @waiting_resource += 1 } sync { @waiting_resource += 1 }

View File

@ -505,6 +505,8 @@ module DB
end end
end end
end end
else
raise "Invalid prepared value. Allowed values are :both and :default"
end end
end end
end end