From 7400a373b0bf742308a34490290b2e7c585a628b Mon Sep 17 00:00:00 2001 From: James Strachan Date: Thu, 2 Aug 2012 12:41:52 +0100 Subject: [PATCH] made ResultSet.map() lazy by default - to save blowing RAM by always making a List of all results --- .../src/main/kotlin/kotlin/jdbc/ResultSets.kt | 22 +------------------ .../test/kotlin/jdbc/JdbcTemplateTest.kt | 2 +- .../test/kotlin/test/kotlin/jdbc/JdbcTest.kt | 2 +- 3 files changed, 3 insertions(+), 23 deletions(-) diff --git a/libraries/kotlin-jdbc/src/main/kotlin/kotlin/jdbc/ResultSets.kt b/libraries/kotlin-jdbc/src/main/kotlin/kotlin/jdbc/ResultSets.kt index 3f0a620f2cf..3af7e98f459 100644 --- a/libraries/kotlin-jdbc/src/main/kotlin/kotlin/jdbc/ResultSets.kt +++ b/libraries/kotlin-jdbc/src/main/kotlin/kotlin/jdbc/ResultSets.kt @@ -33,7 +33,7 @@ fun ResultSet.iterator() : Iterator { /** * Returns iterable that calls to the specified mapper function for each row */ -fun ResultSet.getMapped(fn : (ResultSet) -> T) : jet.Iterable { +fun ResultSet.map(fn : (ResultSet) -> T) : jet.Iterable { val rs = this val iterator = object : Iterator{ @@ -90,26 +90,6 @@ fun ResultSet.get(columnId: Int): Any? = this.getObject(columnId) */ fun ResultSet.get(columnName: String): Any? = this.getObject(columnName) -/** - * Maps the collection of rows to some value - */ -fun ResultSet.map(fn: (ResultSet) -> T) : List { - val answer = ArrayList() - mapTo(answer, fn) - return answer -} - -/** - * Maps the collection of rows to some value and adds it to the result collection - */ -fun ResultSet.mapTo(result: Collection, fn: (ResultSet) -> T) : Collection { - for (row in this) { - val element = fn(row) - result.add(element) - } - return result -} - private fun ResultSet.ensureHasRow() : ResultSet { if (!next()) { throw IllegalStateException("There are no rows left in cursor") diff --git a/libraries/kotlin-jdbc/src/test/kotlin/test/kotlin/jdbc/JdbcTemplateTest.kt b/libraries/kotlin-jdbc/src/test/kotlin/test/kotlin/jdbc/JdbcTemplateTest.kt index f8e75e68aee..982205dae86 100644 --- a/libraries/kotlin-jdbc/src/test/kotlin/test/kotlin/jdbc/JdbcTemplateTest.kt +++ b/libraries/kotlin-jdbc/src/test/kotlin/test/kotlin/jdbc/JdbcTemplateTest.kt @@ -27,7 +27,7 @@ class JdbcTemplateTest { val names = dataSource.query( StringTemplate(array("select * from foo where id = ", id)) ) { - it.map{ it["name"] } + it.map{ it["name"] }.toList() } println("Found names $names") diff --git a/libraries/kotlin-jdbc/src/test/kotlin/test/kotlin/jdbc/JdbcTest.kt b/libraries/kotlin-jdbc/src/test/kotlin/test/kotlin/jdbc/JdbcTest.kt index 5a382c0e6b1..a1ee23d1eb4 100644 --- a/libraries/kotlin-jdbc/src/test/kotlin/test/kotlin/jdbc/JdbcTest.kt +++ b/libraries/kotlin-jdbc/src/test/kotlin/test/kotlin/jdbc/JdbcTest.kt @@ -62,7 +62,7 @@ class JdbcTest { } dataSource.query("select * from foo") { - for (row in it.getMapped(mapper)) { + for (row in it.map(mapper)) { println(row) } }