Changeset: dd913fc02a92 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/dd913fc02a92
Modified Files:
        cmake/monetdb-defines.cmake
        cmake/monetdb-options.cmake
        sql/backends/monet5/sql.c
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.ppc64.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.ppc64
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.ppc64.int128
        sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: default
Log Message:

Merged with Jul2021


diffs (truncated from 357 to 300 lines):

diff --git a/cmake/monetdb-defines.cmake b/cmake/monetdb-defines.cmake
--- a/cmake/monetdb-defines.cmake
+++ b/cmake/monetdb-defines.cmake
@@ -297,7 +297,7 @@ macro(monetdb_configure_misc)
     CACHE STRING
     "Password hash algorithm, one of MD5, SHA1, RIPEMD160, SHA224, SHA256, 
SHA384, SHA512, defaults to SHA512")
 
-  if(NOT ${PASSWORD_BACKEND} MATCHES 
"^MD5|SHA1|RIPEMD160|SHA224|SHA256|SHA384|SHA512$")
+  if(NOT ${PASSWORD_BACKEND} MATCHES 
"^(MD5|SHA1|RIPEMD160|SHA224|SHA256|SHA384|SHA512)$")
     message(FATAL_ERROR
       "PASSWORD_BACKEND invalid, choose one of MD5, SHA1, RIPEMD160, SHA224, 
SHA256, SHA384, SHA512")
   endif()
diff --git a/cmake/monetdb-options.cmake b/cmake/monetdb-options.cmake
--- a/cmake/monetdb-options.cmake
+++ b/cmake/monetdb-options.cmake
@@ -39,6 +39,10 @@ option(FITS
   "Enable support for FITS (default=ON)"
   ON)
 
+option(FORCE_COLORED_OUTPUT
+  "Force colored compiler output (GCC and Clang only; default=OFF)"
+  OFF)
+
 option(GEOM
   "Enable support for geom module (default=ON)"
   ON)
diff --git a/cmake/monetdb-toolchain.cmake b/cmake/monetdb-toolchain.cmake
--- a/cmake/monetdb-toolchain.cmake
+++ b/cmake/monetdb-toolchain.cmake
@@ -7,6 +7,14 @@
 #]]
 
 function(monetdb_default_toolchain)
+  if (${FORCE_COLORED_OUTPUT})
+    if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
+      MT_addCompilerFlag("-fdiagnostics-color=always" 
"-fdiagnostics-color=always" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
+    elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "^(Clang|AppleClang)$")
+      MT_addCompilerFlag("-fcolor-diagnostics" "-fcolor-diagnostics" 
"${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
+    endif ()
+  endif ()
+
   if(SANITIZER)
     if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
       MT_addCompilerFlag("-fsanitize=address" "-fsanitize=address" 
"${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
@@ -18,7 +26,7 @@ function(monetdb_default_toolchain)
   endif()
 
   if(STRICT)
-    if(${CMAKE_C_COMPILER_ID} MATCHES "^GNU|Clang|AppleClang$")
+    if(${CMAKE_C_COMPILER_ID} MATCHES "^(GNU|Clang|AppleClang)$")
       MT_addCompilerFlag("-Werror" "-Werror" "${CMAKE_C_FLAGS}" "all" 
CMAKE_C_FLAGS)
       MT_addCompilerFlag("-Wall" "-Wall" "${CMAKE_C_FLAGS}" "all" 
CMAKE_C_FLAGS)
       MT_addCompilerFlag("-Wextra" "-Wextra" "${CMAKE_C_FLAGS}" "all" 
CMAKE_C_FLAGS)
@@ -101,6 +109,14 @@ function(monetdb_default_toolchain)
 endfunction()
 
 function(monetdb_default_compiler_options)
+  if (${FORCE_COLORED_OUTPUT})
+    if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
+      add_compile_options("-fdiagnostics-color=always")
+    elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "^(Clang|AppleClang)$")
+      add_compile_options("-fcolor-diagnostics")
+    endif ()
+  endif ()
+
   if(SANITIZER)
     if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
       add_compile_options("-fsanitize=address")
@@ -112,7 +128,7 @@ function(monetdb_default_compiler_option
   endif()
 
   if(STRICT)
-    if(${CMAKE_C_COMPILER_ID} MATCHES "^GNU|Clang|AppleClang$")
+    if(${CMAKE_C_COMPILER_ID} MATCHES "^(GNU|Clang|AppleClang)$")
       add_compile_options("-Werror")
       add_compile_options("-Wall")
       add_compile_options("-Wextra")
@@ -149,10 +165,14 @@ function(monetdb_default_compiler_option
       add_option_if_available("-Wduplicated-branches")
       add_option_if_available("-Wrestrict")
       add_option_if_available("-Wnested-externs")
+      add_option_if_available("-Wmissing-noreturn")
+      add_option_if_available("-Wuninitialized")
+
       # since we use values of type "int8_t" as subscript,
       # and int8_t may be defined as plain "char", we cannot
       # allow this warning (part of -Wall)
       add_option_if_available("-Wno-char-subscripts")
+
       add_option_if_available("-Wunreachable-code")
     elseif(${CMAKE_C_COMPILER_ID} STREQUAL "Intel")
       if(WIN32)
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -2769,7 +2769,7 @@ mvc_export_row_wrap( Client cntxt, MalBl
        tpe = BATdescriptor(tpeId);
        len = BATdescriptor(lenId);
        scale = BATdescriptor(scaleId);
-       if( msg || tbl == NULL || atr == NULL || tpe == NULL || len == NULL || 
scale == NULL)
+       if (tbl == NULL || atr == NULL || tpe == NULL || len == NULL || scale 
== NULL)
                goto wrapup_result_set;
        /* mimick the old rsColumn approach; */
        itertbl = bat_iterator(tbl);
diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -161,7 +161,7 @@ validate_alter_table_add_table(mvc *sql,
                throw(SQL,call,SQLSTATE(42000) "ALTER TABLE: can't add a 
temporary table into a %s", errtable);
        if (ms->base.id != ps->base.id)
                throw(SQL,call,SQLSTATE(42000) "ALTER TABLE: all children 
tables of '%s.%s' must be part of schema '%s'", msname, mtname, msname);
-       if (strcmp(rmt->base.name, rpt->base.name) == 0)
+       if (rmt->base.id == rpt->base.id)
                throw(SQL,call,SQLSTATE(42000) "ALTER TABLE: a %s can't be a 
child of itself", errtable);
        node *n = members_find_child_id(rmt->members, rpt->base.id);
        if (n && !update)
diff --git a/sql/scripts/51_sys_schema_extension.sql 
b/sql/scripts/51_sys_schema_extension.sql
--- a/sql/scripts/51_sys_schema_extension.sql
+++ b/sql/scripts/51_sys_schema_extension.sql
@@ -457,16 +457,16 @@ INSERT INTO sys.privilege_codes (privile
   (15, 'SELECT,INSERT,UPDATE,DELETE'),
   (65, 'SELECT,TRUNCATE'),
   (66, 'UPDATE,TRUNCATE'),
+  (67, 'SELECT,UPDATE,TRUNCATE'),
   (68, 'INSERT,TRUNCATE'),
+  (69, 'SELECT,INSERT,TRUNCATE'),
+  (70, 'INSERT,UPDATE,TRUNCATE'),
+  (71, 'SELECT,INSERT,UPDATE,TRUNCATE'),
   (72, 'DELETE,TRUNCATE'),
-  (67, 'SELECT,UPDATE,TRUNCATE'),
-  (69, 'SELECT,INSERT,TRUNCATE'),
   (73, 'SELECT,DELETE,TRUNCATE'),
-  (70, 'INSERT,UPDATE,TRUNCATE'),
+  (74, 'UPDATE,DELETE,TRUNCATE'),
+  (75, 'SELECT,UPDATE,DELETE,TRUNCATE'),
   (76, 'INSERT,DELETE,TRUNCATE'),
-  (74, 'UPDATE,DELETE,TRUNCATE'),
-  (71, 'SELECT,INSERT,UPDATE,TRUNCATE'),
-  (75, 'SELECT,UPDATE,DELETE,TRUNCATE'),
   (77, 'SELECT,INSERT,DELETE,TRUNCATE'),
   (78, 'INSERT,UPDATE,DELETE,TRUNCATE'),
   (79, 'SELECT,INSERT,UPDATE,DELETE,TRUNCATE');
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -9303,6 +9303,9 @@ replace_column_references_with_nulls_2(m
 static sql_rel *
 out2inner(visitor *v, sql_rel* sel, sql_rel* join, sql_rel* inner_join_side, 
operator_type new_type) {
 
+       /* handle inner_join relations with a simple select */
+       if (is_select(inner_join_side->op) && inner_join_side->l)
+               inner_join_side = inner_join_side->l;
     if (!is_base(inner_join_side->op) && 
!is_simple_project(inner_join_side->op)) {
         // Nothing to do here.
         return sel;
diff --git a/sql/test/testdb-upgrade-hge/Tests/dump.stable.out 
b/sql/test/testdb-upgrade-hge/Tests/dump.stable.out
--- a/sql/test/testdb-upgrade-hge/Tests/dump.stable.out
+++ b/sql/test/testdb-upgrade-hge/Tests/dump.stable.out
@@ -101185,9 +101185,11 @@ 0    0
 0      1
 1      0
 1      1
-create view keytest3 as select t2.key1, t2.key2, t1.key3 from keytest1 t1, 
keytest2 t2 where t1.key1 = t2.key1 and t1.key2 = t2.key2;
+create view keytest3 as select t2.key1, t2.key2, t1.key3 from keytest1 t1, 
keytest2 t2 where t1.key1 = t2.key1 and t1.key2 = t2.key2
+;
 COMMENT ON VIEW "testschema"."keytest3" IS 'a view used for testing';
-create trigger keytesttrigger after update on keytest1 referencing new row as 
new_row for each row insert into keytest2 values (new_row.key1, new_row.key2);
+create trigger keytesttrigger after update on keytest1 referencing new row as 
new_row for each row insert into keytest2 values (new_row.key1, new_row.key2)
+;
 create function keyjoin()
 returns table (
  key1 integer,
@@ -101200,7 +101202,8 @@ begin
  from keytest1, keytest2
  where keytest1.key1 = keytest2.key1 and keytest1.key2 = keytest2.key2
  );
-end;
+end
+;
 COMMENT ON FUNCTION "testschema"."keyjoin"() IS 'function used for testing';
 CREATE TABLE "testschema"."selfref" (
        "id"       INTEGER       NOT NULL DEFAULT next value for 
"testschema"."selfref_seq",
@@ -101218,7 +101221,8 @@ create function nleaves()
 returns integer
 begin
  return select count(*) from selfref where parentid is not null;
-end;
+end
+;
 CREATE TABLE "testschema"."blobtest" (
        "data" BINARY LARGE OBJECT
 );
@@ -101350,20 +101354,24 @@ CREATE FUNCTION "testschema"."pyapi01"("
         x = range(1, i + 1)
         y = [42.0] * i
         return([x,y])
-};
+}
+;
 CREATE FUNCTION "testschema"."pyapi02"("i" INTEGER, "j" INTEGER, "z" INTEGER) 
RETURNS INTEGER LANGUAGE PYTHON3
 {
     x = i * sum(j) * z
     return x
-};
+}
+;
 CREATE FUNCTION "testschema"."rapi01"("i" INTEGER) RETURNS TABLE ("i" INTEGER, 
"d" DOUBLE) LANGUAGE R
 {
         return(data.frame(i=seq(1,i),d=42.0));
-};
+}
+;
 CREATE FUNCTION "testschema"."rapi02"("i" INTEGER, "j" INTEGER, "z" INTEGER) 
RETURNS INTEGER LANGUAGE R
 {
         return(i*sum(j)*z);
-};
+}
+;
 CREATE FUNCTION "testschema"."capi00"("inp" INTEGER) RETURNS INTEGER LANGUAGE C
 {
     size_t i;
@@ -101371,7 +101379,8 @@ CREATE FUNCTION "testschema"."capi00"("i
     for(i = 0; i < inp.count; i++) {
         result->data[i] = inp.data[i] * 2;
     }
-};
+}
+;
 CREATE AGGREGATE "testschema"."aggrmedian"("val" INTEGER) RETURNS INTEGER 
LANGUAGE PYTHON
 {
         if 'aggr_group' in locals():
@@ -101382,11 +101391,13 @@ CREATE AGGREGATE "testschema"."aggrmedia
                 return(x)
         else:
                 return(numpy.median(val))
-};
+}
+;
 CREATE FUNCTION "testschema"."pyapi10_mult"("i" INTEGER, "j" INTEGER) RETURNS 
INTEGER LANGUAGE PYTHON_MAP
 {
     return(i*j)
-};
+}
+;
 CREATE TABLE "testschema"."geomtest" (
        "p"   GEOMETRY(POINT),
        "c"   GEOMETRY(LINESTRING),
@@ -101420,7 +101431,7 @@ ALTER TABLE "testschema"."mt2" ADD TABLE
 ALTER TABLE "testschema"."mt2" ADD TABLE "testschema"."t3";
 ALTER TABLE "testschema"."mt1" ADD TABLE "testschema"."t1";
 ALTER TABLE "testschema"."mt1" ADD TABLE "testschema"."t2";
-ALTER TABLE "testschema"."keytest2" ADD CONSTRAINT "keytest2_key1_key2_fkey" 
FOREIGN KEY ("key1", "key2") REFERENCES "testschema"."keytest1" ("key1", 
"key2");
+ALTER TABLE "testschema"."keytest2" ADD CONSTRAINT "keytest2_key1_key2_fkey" 
FOREIGN KEY ("key1", "key2") REFERENCES "testschema"."keytest1" ("key1", 
"key2") ON DELETE CASCADE;
 ALTER TABLE "testschema"."selfref" ADD CONSTRAINT "selfref_parentid_fkey" 
FOREIGN KEY ("parentid") REFERENCES "testschema"."selfref" ("id");
 ALTER SEQUENCE "testschema"."selfref_seq" RESTART WITH 7 NO CYCLE;
 ALTER SEQUENCE "testschema"."test_seq" RESTART WITH 8 INCREMENT BY 3 MINVALUE 
5 MAXVALUE 10 CYCLE;
diff --git a/sql/test/testdb-upgrade/Tests/dump.stable.out 
b/sql/test/testdb-upgrade/Tests/dump.stable.out
--- a/sql/test/testdb-upgrade/Tests/dump.stable.out
+++ b/sql/test/testdb-upgrade/Tests/dump.stable.out
@@ -101185,9 +101185,11 @@ 0    0
 0      1
 1      0
 1      1
-create view keytest3 as select t2.key1, t2.key2, t1.key3 from keytest1 t1, 
keytest2 t2 where t1.key1 = t2.key1 and t1.key2 = t2.key2;
+create view keytest3 as select t2.key1, t2.key2, t1.key3 from keytest1 t1, 
keytest2 t2 where t1.key1 = t2.key1 and t1.key2 = t2.key2
+;
 COMMENT ON VIEW "testschema"."keytest3" IS 'a view used for testing';
-create trigger keytesttrigger after update on keytest1 referencing new row as 
new_row for each row insert into keytest2 values (new_row.key1, new_row.key2);
+create trigger keytesttrigger after update on keytest1 referencing new row as 
new_row for each row insert into keytest2 values (new_row.key1, new_row.key2)
+;
 create function keyjoin()
 returns table (
  key1 integer,
@@ -101200,7 +101202,8 @@ begin
  from keytest1, keytest2
  where keytest1.key1 = keytest2.key1 and keytest1.key2 = keytest2.key2
  );
-end;
+end
+;
 COMMENT ON FUNCTION "testschema"."keyjoin"() IS 'function used for testing';
 CREATE TABLE "testschema"."selfref" (
        "id"       INTEGER       NOT NULL DEFAULT next value for 
"testschema"."selfref_seq",
@@ -101218,7 +101221,8 @@ create function nleaves()
 returns integer
 begin
  return select count(*) from selfref where parentid is not null;
-end;
+end
+;
 CREATE TABLE "testschema"."blobtest" (
        "data" BINARY LARGE OBJECT
 );
@@ -101350,20 +101354,24 @@ CREATE FUNCTION "testschema"."pyapi01"("
         x = range(1, i + 1)
         y = [42.0] * i
         return([x,y])
-};
+}
+;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to