From 30ea0945ed85d1565b27013665cd7743bba042cf Mon Sep 17 00:00:00 2001 From: Miguel Branco Date: Thu, 6 Mar 2025 16:11:33 +0100 Subject: [PATCH 1/3] Fix to case errors --- .../rawlabs/das/sqlite/DASSqliteBackend.scala | 8 +- src/test/resources/mydb | Bin 0 -> 3072 bytes .../das/sqlite/DASSqliteSimpleTest.scala | 83 ++++++++++++++++++ .../das/sqlite/DASSqliteTableTest.scala | 4 +- 4 files changed, 89 insertions(+), 6 deletions(-) create mode 100644 src/test/resources/mydb create mode 100644 src/test/scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala diff --git a/src/main/scala/com/rawlabs/das/sqlite/DASSqliteBackend.scala b/src/main/scala/com/rawlabs/das/sqlite/DASSqliteBackend.scala index f4c9f51..c3ddfce 100644 --- a/src/main/scala/com/rawlabs/das/sqlite/DASSqliteBackend.scala +++ b/src/main/scala/com/rawlabs/das/sqlite/DASSqliteBackend.scala @@ -77,7 +77,7 @@ private class DASSqliteBackend(dataSource: DataSource) extends StrictLogging { val tableMap = scala.collection.mutable.Map.empty[String, DASSqliteTable] while (rs.next()) { - val tableName = rs.getString("name").toLowerCase + val tableName = rs.getString("name") val pkOpt = primaryKey(conn, tableName) val tdef = tableDefinition(conn, tableName) tableMap += tableName -> new DASSqliteTable(this, tdef, pkOpt) @@ -141,7 +141,7 @@ private class DASSqliteBackend(dataSource: DataSource) extends StrictLogging { val colCount = meta.getColumnCount for (i <- 1 to colCount) { - val colName = meta.getColumnName(i).toLowerCase + val colName = meta.getColumnName(i) val value = toDASValue(rs, i) rowBuilder.addColumns(Column.newBuilder().setName(colName).setData(value).build()) } @@ -301,7 +301,7 @@ private class DASSqliteBackend(dataSource: DataSource) extends StrictLogging { val meta = rs.getMetaData val colCount = meta.getColumnCount for (i <- 1 to colCount) { - val colName = meta.getColumnName(i).toLowerCase + val colName = meta.getColumnName(i) val value = toDASValue(rs, i) rowBuilder.addColumns( Column @@ -341,7 +341,7 @@ private class DASSqliteBackend(dataSource: DataSource) extends StrictLogging { pkColumns += rs.getString("name") } } - if (pkColumns.size == 1) Some(pkColumns.head.toLowerCase) + if (pkColumns.size == 1) Some(pkColumns.head) else None } } diff --git a/src/test/resources/mydb b/src/test/resources/mydb new file mode 100644 index 0000000000000000000000000000000000000000..d3b4a4b67fd7d39094ab8e0132b7aa5e52ee8ef4 GIT binary patch literal 3072 zcmeHIF>ljA6u!G>Ur3}*5KNTib!#Ldfe;H5*TkYxZ8x=z)J)NVjcVcAYU)5U!o*ML z)}PS5zkr2-Kfr*HK%F{Os?ex6>t~3yF(8qxn;?N(s!XM$fJyJsxwopO&rIC}quspC40PM2{@ zv?)olDBj=OP1VaD%W099@pyiX@#DFp-?p)&fI~*$CwzrtID}6ssH{?;Qs6Hr@PKoA zmo5WePj>DH`Lx*XuE{hdN1vM}rxvxq?8|pa)DGi)xksHlErZjhYA{?mdE4@n*V|n; z&mtt3znY*sS`5NCie{FVPu|O!hxb@X#F$9aIBS(e&kiig>xzdBE0H8-WWrgHt$xA1bJs5BY;N60P6KCFV}ZQ literal 0 HcmV?d00001 diff --git a/src/test/scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala b/src/test/scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala new file mode 100644 index 0000000..305ddcf --- /dev/null +++ b/src/test/scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala @@ -0,0 +1,83 @@ +/* + * Copyright 2024 RAW Labs S.A. + * + * Use of this software is governed by the Business Source License + * included in the file licenses/BSL.txt. + * + * As of the Change Date specified in that file, in accordance with + * the Business Source License, use of this software will be governed + * by the Apache License, Version 2.0, included in the file + * licenses/APL.txt. + */ + +package com.rawlabs.das.sqlite + +import scala.jdk.CollectionConverters._ + +import org.scalatest.BeforeAndAfterAll +import org.scalatest.funsuite.AnyFunSuite + +import com.rawlabs.protocol.das.v1.tables.{Column, Row} +import com.rawlabs.protocol.das.v1.types.{Value, ValueDouble, ValueInt, ValueString} +import com.typesafe.scalalogging.StrictLogging + +class DASSqliteSimpleTest extends AnyFunSuite with BeforeAndAfterAll with StrictLogging { + + // =========================================================================== + // Tests for DASSqlite (top-level) methods + // =========================================================================== + test("read mydb file") { + val resourceUrl = getClass.getResource("/mydb") + val file = new java.io.File(resourceUrl.toURI) + val fullPath = file.getAbsolutePath + + val sdk = new DASSqlite(Map("database" -> fullPath)) + val defs = sdk.tableDefinitions + assert(defs.nonEmpty, "tableDefinitions should not be empty.") + val names = defs.map(_.getTableId.getName) + assert(names.contains("COMPANY"), "We expect 'COMPANY' table in the DB.") + + val columns = defs.find(_.getTableId.getName == "COMPANY").get.getColumnsList.asScala + assert(columns.map(_.getName) == Seq("ID", "NAME", "AGE", "ADDRESS", "SALARY"), "Columns should match.") + + val rs = + sdk.getTable("COMPANY").get.execute(Seq.empty, Seq("ID", "NAME", "AGE", "ADDRESS", "SALARY"), Seq.empty, None) + val buf = scala.collection.mutable.ListBuffer[Row]() + while (rs.hasNext) { + buf += rs.next() + } + rs.close() + + assert( + buf.toList == List( + buildMyDbRow(1, "Paul", 32, "California", 20000.0), + buildMyDbRow(2, "Allen", 25, "Texas", 15000.0), + buildMyDbRow(3, "Teddy", 23, "Norway", 20000.0), + buildMyDbRow(4, "Mark", 25, "Rich-Mond ", 65000.0), + buildMyDbRow(5, "David", 27, "Texas", 85000.0), + buildMyDbRow(6, "Kim", 22, "South-Hall", 45000.0))) + + sdk.close() + } + + private def buildMyDbRow(id: Int, name: String, age: Int, address: String, salary: Double): Row = { + val row = Row.newBuilder() + row.addColumns(Column.newBuilder().setName("ID").setData(Value.newBuilder().setInt(ValueInt.newBuilder().setV(id)))) + row.addColumns( + Column.newBuilder().setName("NAME").setData(Value.newBuilder().setString(ValueString.newBuilder().setV(name)))) + row.addColumns( + Column.newBuilder().setName("AGE").setData(Value.newBuilder().setInt(ValueInt.newBuilder().setV(age)))) + row.addColumns( + Column + .newBuilder() + .setName("ADDRESS") + .setData(Value.newBuilder().setString(ValueString.newBuilder().setV(address)))) + row.addColumns( + Column + .newBuilder() + .setName("SALARY") + .setData(Value.newBuilder().setDouble(ValueDouble.newBuilder().setV(salary)))) + row.build() + } + +} diff --git a/src/test/scala/com/rawlabs/das/sqlite/DASSqliteTableTest.scala b/src/test/scala/com/rawlabs/das/sqlite/DASSqliteTableTest.scala index 6f08c93..42ed979 100644 --- a/src/test/scala/com/rawlabs/das/sqlite/DASSqliteTableTest.scala +++ b/src/test/scala/com/rawlabs/das/sqlite/DASSqliteTableTest.scala @@ -116,7 +116,7 @@ class DASSqliteTableTest extends AnyFunSuite with BeforeAndAfterAll with StrictL test("DASSqlite.tableDefinitions returns our test table") { val defs = sdk.tableDefinitions assert(defs.nonEmpty, "tableDefinitions should not be empty.") - val names = defs.map(_.getTableId.getName.toLowerCase) + val names = defs.map(_.getTableId.getName) assert(names.contains("all_types"), "We expect 'all_types' table in the DB.") } @@ -143,7 +143,7 @@ class DASSqliteTableTest extends AnyFunSuite with BeforeAndAfterAll with StrictL assert(defn.getTableId.getName.equalsIgnoreCase("all_types"), "Expected table name 'all_types'") assert(defn.getColumnsCount > 0, "We expect at least 1 column in the schema.") - val columnNames = defn.getColumnsList.asScala.map(_.getName.toLowerCase).toSet + val columnNames = defn.getColumnsList.asScala.map(_.getName).toSet val expectedSomeColumns = Set( "id", "col_integer", From 602e669adc968351c8656a701f44dc70065338d4 Mon Sep 17 00:00:00 2001 From: Miguel Branco Date: Thu, 6 Mar 2025 16:12:17 +0100 Subject: [PATCH 2/3] Update DASSqliteSimpleTest.scala --- src/test/scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala b/src/test/scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala index 305ddcf..8b3199e 100644 --- a/src/test/scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala +++ b/src/test/scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala @@ -1,5 +1,5 @@ /* - * Copyright 2024 RAW Labs S.A. + * Copyright 2025 RAW Labs S.A. * * Use of this software is governed by the Business Source License * included in the file licenses/BSL.txt. From 0d3a5a06006ef9edded44cec1b21fa6a1a498f7d Mon Sep 17 00:00:00 2001 From: Miguel Branco Date: Thu, 6 Mar 2025 16:12:30 +0100 Subject: [PATCH 3/3] Update DASSqliteSimpleTest.scala --- .../scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/test/scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala b/src/test/scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala index 8b3199e..78ac5c8 100644 --- a/src/test/scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala +++ b/src/test/scala/com/rawlabs/das/sqlite/DASSqliteSimpleTest.scala @@ -23,9 +23,6 @@ import com.typesafe.scalalogging.StrictLogging class DASSqliteSimpleTest extends AnyFunSuite with BeforeAndAfterAll with StrictLogging { - // =========================================================================== - // Tests for DASSqlite (top-level) methods - // =========================================================================== test("read mydb file") { val resourceUrl = getClass.getResource("/mydb") val file = new java.io.File(resourceUrl.toURI)