You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ignite.apache.org by GitBox <gi...@apache.org> on 2022/07/14 11:39:19 UTC

[GitHub] [ignite-3] korlov42 commented on a diff in pull request #941: IGNITE-17212 Sql. Add support for DEFAULT operator

korlov42 commented on code in PR #941:
URL: https://github.com/apache/ignite-3/pull/941#discussion_r921058812


##########
modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDmlTest.java:
##########
@@ -307,4 +312,131 @@ public void implicitPk() {
 
         assertEquals(3, pkVals.size());
     }
+
+    @Test
+    public void testInsertDefaultValue() {
+        var args = List.of(
+                // TODO: IGNITE-17298
+                // new DefaultValueArg("BOOLEAN", "TRUE", Boolean.TRUE),
+                // new DefaultValueArg("BOOLEAN NOT NULL", "TRUE", Boolean.TRUE),
+
+                new DefaultValueArg("BIGINT", "10", 10L),
+                new DefaultValueArg("INTEGER", "10", 10),
+                new DefaultValueArg("SMALLINT", "10", (short) 10),
+                new DefaultValueArg("TINYINT", "10", (byte) 10),
+                new DefaultValueArg("DOUBLE", "10.01", 10.01d),
+                new DefaultValueArg("FLOAT", "10.01", 10.01f),
+                new DefaultValueArg("DECIMAL(4, 2)", "10.01", new BigDecimal("10.01")),
+                new DefaultValueArg("CHAR(2)", "'10'", "10"),
+                new DefaultValueArg("VARCHAR", "'10'", "10"),
+                new DefaultValueArg("VARCHAR NOT NULL", "'10'", "10"),
+                new DefaultValueArg("VARCHAR(2)", "'10'", "10"),
+
+                // TODO: IGNITE-17373
+                // new DefaultValueArg("INTERVAL DAYS TO SECONDS", "INTERVAL '10' DAYS", Duration.ofDays(10)),
+                // new DefaultValueArg("INTERVAL YEARS TO MONTHS", "INTERVAL '10' MONTHS", Period.ofMonths(10)),
+                // new DefaultValueArg("INTERVAL MONTHS", "INTERVAL '10' YEARS", Period.ofYears(10)),
+
+                new DefaultValueArg("DATE", "DATE '2021-01-01'", LocalDate.parse("2021-01-01")),
+                new DefaultValueArg("TIME", "TIME '01:01:01'", LocalTime.parse("01:01:01")),
+                new DefaultValueArg("TIMESTAMP", "TIMESTAMP '2021-01-01 01:01:01'", LocalDateTime.parse("2021-01-01T01:01:01")),
+
+                // TODO: IGNITE-17376
+                // new DefaultValueArg("TIMESTAMP WITH LOCAL TIME ZONE", "TIMESTAMP '2021-01-01 01:01:01'"
+                //         , LocalDateTime.parse("2021-01-01T01:01:01")),
+
+                new DefaultValueArg("BINARY(3)", "x'010203'", new byte[]{1, 2, 3})
+
+                // TODO: IGNITE-17374
+                // new DefaultValueArg("VARBINARY", "x'010203'", new byte[]{1, 2, 3})
+        );
+
+        checkDefaultValue(args);
+
+        checkWrongDefault("VARCHAR", "10");
+        checkWrongDefault("INT", "'10'");
+        checkWrongDefault("INT", "TRUE");
+        checkWrongDefault("DATE", "10");
+        checkWrongDefault("DATE", "TIME '01:01:01'");
+        checkWrongDefault("TIME", "TIMESTAMP '2021-01-01 01:01:01'");
+
+        // TODO: IGNITE-17298
+        // checkWrongDefault("BOOLEAN", "1");
+
+        // TODO: IGNITE-17373
+        // checkWrongDefault("INTERVAL DAYS", "INTERVAL '10' MONTHS");
+        // checkWrongDefault("INTERVAL MONTHS", "INTERVAL '10' DAYS");
+
+        checkWrongDefault("VARBINARY", "'10'");
+        checkWrongDefault("VARBINARY", "10");
+    }
+
+    private void checkDefaultValue(List<DefaultValueArg> args) {
+        try {
+            StringBuilder createStatementBuilder = new StringBuilder("CREATE TABLE test (id INT PRIMARY KEY");
+
+            var idx = 0;
+            for (var arg : args) {
+                createStatementBuilder.append(", col_").append(idx++).append(" ").append(arg.sqlType)
+                        .append(" DEFAULT ").append(arg.sqlVal);
+            }
+
+            var createStatement = createStatementBuilder.append(")").toString();
+
+            sql(createStatement);
+            sql("INSERT INTO test (id) VALUES (0)");
+
+            var expectedVals = args.stream()
+                    .map(a -> a.expectedVal)
+                    .collect(Collectors.toList());
+
+            assert args.size() > 0;

Review Comment:
   done



-- 
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: notifications-unsubscribe@ignite.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org