Skip to content

Commit 44aa04b

Browse files
author
Brian J. Cardiff
authored
Merge pull request #88 from crystal-lang/crystal/0.34.0
Update to Crystal 0.34.0
2 parents e37351c + cfa4e09 commit 44aa04b

File tree

4 files changed

+23
-53
lines changed

4 files changed

+23
-53
lines changed

shard.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version: 0.10.0
44
dependencies:
55
db:
66
github: crystal-lang/crystal-db
7-
version: ~> 0.8.0
7+
version: ~> 0.9.0
88

99
authors:
1010
- Juan Wajnerman <[email protected]>

spec/db_spec.cr

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,11 @@ DB::DriverSpecs(MySql::Any).run do
3838
sample_value Time.utc(2016, 2, 15), "datetime", "TIMESTAMP '2016-02-15 00:00:00.000'"
3939
sample_value Time.utc(2016, 2, 15, 10, 15, 30), "datetime", "TIMESTAMP '2016-02-15 10:15:30.000'"
4040
sample_value Time.utc(2016, 2, 15, 10, 15, 30), "timestamp", "TIMESTAMP '2016-02-15 10:15:30.000'"
41-
{% if compare_versions(Crystal::VERSION, "0.28.0") >= 0 %}
42-
sample_value Time.local(2016, 2, 15, 7, 15, 30, location: Time::Location.fixed("fixed", -3*3600)), "timestamp", "'2016-02-15 10:15:30.000'", type_safe_value: false
43-
{% else %}
44-
sample_value Time.new(2016, 2, 15, 7, 15, 30, location: Time::Location.fixed("fixed", -3*3600)), "timestamp", "'2016-02-15 10:15:30.000'", type_safe_value: false
45-
{% end %}
41+
sample_value Time.local(2016, 2, 15, 7, 15, 30, location: Time::Location.fixed("fixed", -3*3600)), "timestamp", "'2016-02-15 10:15:30.000'", type_safe_value: false
4642
sample_value Time.utc(2016, 2, 29), "date", "LAST_DAY('2016-02-15')", type_safe_value: false
4743
sample_value Time::Span.new(nanoseconds: 0), "Time", "TIME('00:00:00')"
48-
sample_value Time::Span.new(10, 25, 21), "Time", "TIME('10:25:21')"
49-
sample_value Time::Span.new(0, 0, 10, 5, 0), "Time", "TIME('00:10:05.000')"
44+
sample_value Time::Span.new(hours: 10, minutes: 25, seconds: 21), "Time", "TIME('10:25:21')"
45+
sample_value Time::Span.new(days: 0, hours: 0, minutes: 10, seconds: 5, nanoseconds: 0), "Time", "TIME('00:10:05.000')"
5046

5147
DB.open db_url do |db|
5248
# needs to check version, microsecond support >= 5.7
@@ -56,8 +52,8 @@ DB::DriverSpecs(MySql::Any).run do
5652
sample_value Time.utc(2016, 2, 15, 10, 15, 30, nanosecond: 543_012_000), "datetime(6)", "TIMESTAMP '2016-02-15 10:15:30.543012'"
5753
sample_value Time.utc(2016, 2, 15, 10, 15, 30, nanosecond: 543_000_000), "timestamp(3)", "TIMESTAMP '2016-02-15 10:15:30.543'"
5854
sample_value Time.utc(2016, 2, 15, 10, 15, 30, nanosecond: 543_012_000), "timestamp(6)", "TIMESTAMP '2016-02-15 10:15:30.543012'"
59-
sample_value Time::Span.new(0, 10, 15, 30, nanoseconds: 543_000_000), "Time(3)", "TIME '10:15:30.543'"
60-
sample_value Time::Span.new(0, 10, 15, 30, nanoseconds: 543_012_000), "Time(6)", "TIME '10:15:30.543012'"
55+
sample_value Time::Span.new(days: 0, hours: 10, minutes: 15, seconds: 30, nanoseconds: 543_000_000), "Time(3)", "TIME '10:15:30.543'"
56+
sample_value Time::Span.new(days: 0, hours: 10, minutes: 15, seconds: 30, nanoseconds: 543_012_000), "Time(6)", "TIME '10:15:30.543012'"
6157
end
6258
end
6359

src/mysql/connection.cr

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
require "socket"
22

33
class MySql::Connection < DB::Connection
4+
{% if compare_versions(Crystal::VERSION, "0.34.0-0") > 0 %}
5+
alias IOErrorOrErrno = IO::Error
6+
{% else %}
7+
alias IOErrorOrErrno = Errno
8+
{% end %}
9+
410
def initialize(context : DB::ConnectionContext)
511
super(context)
612
@socket = uninitialized TCPSocket
@@ -28,7 +34,7 @@ class MySql::Connection < DB::Connection
2834
read_ok_or_err do |packet, status|
2935
raise "packet #{status} not implemented"
3036
end
31-
rescue Errno
37+
rescue IOErrorOrErrno
3238
raise DB::ConnectionRefused.new
3339
end
3440
end

src/mysql/types.cr

Lines changed: 10 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -187,11 +187,7 @@ abstract struct MySql::Type
187187
d = v.days
188188
raise ArgumentError.new("MYSQL TIME over 34 days cannot be saved - https://dev.mysql.com/doc/refman/5.7/en/time.html") if d > 34
189189
microsecond : Int32
190-
{% if compare_versions(Crystal::VERSION, "0.28.0") >= 0 %}
191-
microsecond = (v.nanoseconds // 1000).to_i32
192-
{% else %}
193-
microsecond = (v.nanoseconds / 1000).to_i32
194-
{% end %}
190+
microsecond = (v.nanoseconds // 1000).to_i32
195191
packet.write_blob UInt8.slice(
196192
negative, d.to_i8, (d >> 8).to_i8, (d >> 16).to_i8, (d >> 24).to_i8,
197193
v.hours.to_i8, v.minutes.to_i8, v.seconds.to_i8,
@@ -211,7 +207,7 @@ abstract struct MySql::Type
211207
minute = packet.read_byte!.to_i32
212208
second = packet.read_byte!.to_i32
213209
ns = pkt > 8 ? (packet.read_int.to_i32 * 1000) : nil
214-
time = ns ? ::Time::Span.new(days, hour, minute, second, nanoseconds: ns) : ::Time::Span.new(days, hour, minute, second)
210+
time = ns ? ::Time::Span.new(days: days, hours: hour, minutes: minute, seconds: second, nanoseconds: ns) : ::Time::Span.new(days: days, hours: hour, minutes: minute, seconds: second)
215211
negative > 0 ? (::Time::Span.new(nanoseconds: 0) - time) : time
216212
end
217213

@@ -222,25 +218,17 @@ abstract struct MySql::Type
222218
rescue
223219
time = ::Time.parse(str, "%H:%M:%S", location: MySql::TIME_ZONE)
224220
end
225-
::Time::Span.new(0, time.hour, time.minute, time.second, nanoseconds: time.nanosecond)
221+
::Time::Span.new(days: 0, hours: time.hour, minutes: time.minute, seconds: time.second, nanoseconds: time.nanosecond)
226222
end
227223
end
228224
decl_type DateTime, 0x0cu8, ::Time do
229225
def self.write(packet, v : ::Time)
230226
v = v.in(location: MySql::TIME_ZONE)
231227
microsecond : Int32
232-
{% if compare_versions(Crystal::VERSION, "0.28.0") >= 0 %}
233-
microsecond = (v.nanosecond // 1000).to_i32
234-
{% else %}
235-
microsecond = (v.nanosecond / 1000).to_i32
236-
{% end %}
228+
microsecond = (v.nanosecond // 1000).to_i32
237229
packet.write_blob UInt8.slice(
238230
v.year.to_i16,
239-
{% if compare_versions(Crystal::VERSION, "0.28.0") >= 0 %}
240-
v.year.to_i16 // 256
241-
{% else %}
242-
v.year.to_i16 / 256
243-
{% end %},
231+
v.year.to_i16 // 256,
244232
v.month.to_i8, v.day.to_i8,
245233
v.hour.to_i8, v.minute.to_i8, v.second.to_i8,
246234
(microsecond & 0x000000FF).to_u8,
@@ -252,41 +240,21 @@ abstract struct MySql::Type
252240

253241
def self.read(packet)
254242
pkt = packet.read_byte!
255-
{% if compare_versions(Crystal::VERSION, "0.28.0") >= 0 %}
256-
return ::Time.local(0, 0, 0, location: MySql::TIME_ZONE) if pkt < 1
257-
{% else %}
258-
return ::Time.new(0, 0, 0, location: MySql::TIME_ZONE) if pkt < 1
259-
{% end %}
243+
return ::Time.local(0, 0, 0, location: MySql::TIME_ZONE) if pkt < 1
260244
year = packet.read_fixed_int(2).to_i32
261245
month = packet.read_byte!.to_i32
262246
day = packet.read_byte!.to_i32
263-
{% if compare_versions(Crystal::VERSION, "0.28.0") >= 0 %}
264-
return ::Time.local(year, month, day, location: MySql::TIME_ZONE) if pkt < 6
265-
{% else %}
266-
return ::Time.new(year, month, day, location: MySql::TIME_ZONE) if pkt < 6
267-
{% end %}
247+
return ::Time.local(year, month, day, location: MySql::TIME_ZONE) if pkt < 6
268248
hour = packet.read_byte!.to_i32
269249
minute = packet.read_byte!.to_i32
270250
second = packet.read_byte!.to_i32
271-
{% if compare_versions(Crystal::VERSION, "0.28.0") >= 0 %}
272-
return ::Time.local(year, month, day, hour, minute, second, location: MySql::TIME_ZONE) if pkt < 8
273-
{% else %}
274-
return ::Time.new(year, month, day, hour, minute, second, location: MySql::TIME_ZONE) if pkt < 8
275-
{% end %}
251+
return ::Time.local(year, month, day, hour, minute, second, location: MySql::TIME_ZONE) if pkt < 8
276252
ns = packet.read_int.to_i32 * 1000
277-
{% if compare_versions(Crystal::VERSION, "0.28.0") >= 0 %}
278-
return ::Time.local(year, month, day, hour, minute, second, nanosecond: ns, location: MySql::TIME_ZONE)
279-
{% else %}
280-
return ::Time.new(year, month, day, hour, minute, second, nanosecond: ns, location: MySql::TIME_ZONE)
281-
{% end %}
253+
return ::Time.local(year, month, day, hour, minute, second, nanosecond: ns, location: MySql::TIME_ZONE)
282254
end
283255

284256
def self.parse(str : ::String)
285-
{% if compare_versions(Crystal::VERSION, "0.28.0") >= 0 %}
286-
return ::Time.local(0, 0, 0, location: MySql::TIME_ZONE) if str.starts_with?("0000-00-00")
287-
{% else %}
288-
return ::Time.new(0, 0, 0, location: MySql::TIME_ZONE) if str.starts_with?("0000-00-00")
289-
{% end %}
257+
return ::Time.local(0, 0, 0, location: MySql::TIME_ZONE) if str.starts_with?("0000-00-00")
290258
begin
291259
begin
292260
::Time.parse(str, "%F %H:%M:%S.%N", location: MySql::TIME_ZONE)

0 commit comments

Comments
 (0)