szymon-miezal commented on code in PR #2957:
URL: https://github.com/apache/cassandra/pull/2957#discussion_r1431294092


##########
test/unit/org/apache/cassandra/tools/cqlsh/CqlshTest.java:
##########
@@ -44,4 +53,95 @@ public void testKeyspaceRequired()
         assertThat(tool.getCleanedStderr(), 
CoreMatchers.containsStringIgnoringCase("No keyspace has been specified"));
         assertEquals(2, tool.getExitCode());
     }
+
+    @Test
+    public void testCopyFloatVectorFromFile() throws IOException
+    {
+        assertCopyOfVectorLiteralsFromFileSucceeds("float", 6, new Object[][] {
+            row(1, vector(0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f)),
+            row(2, vector(-0.1f, -0.2f, -0.3f, -0.4f, -0.5f, -0.6f)),
+            row(3, vector(0.9f, 0.8f, 0.7f, 0.6f, 0.5f, 0.4f))
+        });
+
+        assertCopyOfVectorLiteralsFromFileSucceeds("float", 3, new Object[][] {
+            row(1, vector(0.1f, 0.2f, 0.3f)),
+            row(2, vector(-0.4f, -0.5f, -0.6f)),
+            row(3, vector(0.7f, 0.8f, 0.9f))
+        });
+    }
+
+    @Test
+    public void testCopyIntVectorFromFile() throws IOException
+    {
+        assertCopyOfVectorLiteralsFromFileSucceeds("int", 6, new Object[][] {
+            row(1, vector(1, 2, 3, 4, 5, 6)),
+            row(2, vector(-1, -2, -3, -4, -5, -6)),
+            row(3, vector(9, 8, 7, 6, 5, 4))
+        });
+
+        assertCopyOfVectorLiteralsFromFileSucceeds("int", 3, new Object[][] {
+            row(1, vector(1, 2, 3)),
+            row(2, vector(-4, -5, -6)),
+            row(3, vector(7, 8, 9))
+        });
+    }
+
+    private void assertCopyOfVectorLiteralsFromFileSucceeds(String vectorType, 
int vectorSize, Object[][] rows) throws IOException
+    {
+        // given a table with a vector column and a file containing vector 
literals
+        createTable(KEYSPACE, format("CREATE TABLE %%s (id int PRIMARY KEY, 
embedding_vector vector<%s, %d>)", vectorType, vectorSize));
+        assertTrue("table should be initially empty", execute("SELECT * FROM 
%s").isEmpty());
+
+        Path csv = prepareCSVFile(rows);
+
+        // when running COPY via cqlsh
+        ToolRunner.ToolResult result = ToolRunner.invokeCqlsh(format("COPY 
%s.%s FROM '%s'", KEYSPACE, currentTable(), csv.toAbsolutePath()));
+        UntypedResultSet importedRows = execute("SELECT * FROM %s");
+
+        // then all rows should be imported
+        result.asserts().success();
+        assertRowsIgnoringOrder(importedRows, rows);
+    }
+
+    private Path prepareCSVFile(Object[][] rows) throws IOException

Review Comment:
   Given other methods that use `prepareCSVFile` are not `static` and there is 
no real value in making it static I decided to keep it as is.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to