mirror of
https://gitea.invidious.io/iv-org/shard-crystal-db.git
synced 2024-08-15 00:53:32 +00:00
Make sure to release a statmenet in case of an exception
This commit is contained in:
parent
2fc3f66a00
commit
72431bb1d8
1 changed files with 13 additions and 3 deletions
|
@ -24,7 +24,7 @@ module DB
|
||||||
# Returns a `ResultSet` for the `query`.
|
# Returns a `ResultSet` for the `query`.
|
||||||
# The `ResultSet` must be closed manually.
|
# The `ResultSet` must be closed manually.
|
||||||
def query(query, *args)
|
def query(query, *args)
|
||||||
prepare(query).query(*args)
|
prepare query, &.query(*args)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Yields a `ResultSet` for the `query`.
|
# Yields a `ResultSet` for the `query`.
|
||||||
|
@ -42,13 +42,23 @@ module DB
|
||||||
|
|
||||||
# Performs the `query` and returns an `ExecResult`
|
# Performs the `query` and returns an `ExecResult`
|
||||||
def exec(query, *args)
|
def exec(query, *args)
|
||||||
prepare(query).exec(*args)
|
prepare query, &.exec(*args)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Performs the `query` and returns a single scalar `DB::Any` value
|
# Performs the `query` and returns a single scalar `DB::Any` value
|
||||||
# puts db.scalar("SELECT MAX(name)") as String # => (a String)
|
# puts db.scalar("SELECT MAX(name)") as String # => (a String)
|
||||||
def scalar(query, *args)
|
def scalar(query, *args)
|
||||||
prepare(query).scalar(*args)
|
prepare query, &.scalar(*args)
|
||||||
|
end
|
||||||
|
|
||||||
|
private def prepare(query)
|
||||||
|
stm = prepare(query)
|
||||||
|
begin
|
||||||
|
yield stm
|
||||||
|
rescue ex
|
||||||
|
stm.release_connection
|
||||||
|
raise ex
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# TODO add query_row
|
# TODO add query_row
|
||||||
|
|
Loading…
Reference in a new issue