Changeset: b963482bf61e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b963482bf61e
Modified Files:
        common/utils/msabaoth.c
        sql/benchmarks/tpch/Tests/01-explain.stable.out
        sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/01-plan.stable.out
        sql/benchmarks/tpch/Tests/03-explain.stable.out
        sql/benchmarks/tpch/Tests/03-plan.stable.out
        sql/benchmarks/tpch/Tests/05-explain.stable.out
        sql/benchmarks/tpch/Tests/05-plan.stable.out
        sql/benchmarks/tpch/Tests/06-explain.stable.out
        sql/benchmarks/tpch/Tests/06-plan.stable.out
        sql/benchmarks/tpch/Tests/07-explain.stable.out
        sql/benchmarks/tpch/Tests/07-plan.stable.out
        sql/benchmarks/tpch/Tests/08-explain.stable.out
        sql/benchmarks/tpch/Tests/08-plan.stable.out
        sql/benchmarks/tpch/Tests/09-explain.stable.out
        sql/benchmarks/tpch/Tests/09-plan.stable.out
        sql/benchmarks/tpch/Tests/10-explain.stable.out
        sql/benchmarks/tpch/Tests/10-plan.stable.out
        sql/benchmarks/tpch/Tests/11-explain.stable.out
        sql/benchmarks/tpch/Tests/11-plan.stable.out
        sql/benchmarks/tpch/Tests/14-explain.stable.out
        sql/benchmarks/tpch/Tests/14-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/14-plan.stable.out
        sql/benchmarks/tpch/Tests/15-explain.stable.out
        sql/benchmarks/tpch/Tests/15-plan.stable.out
        sql/benchmarks/tpch/Tests/17-explain.stable.out
        sql/benchmarks/tpch/Tests/17-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/17-plan.stable.out
        sql/benchmarks/tpch/Tests/18-plan.stable.out
        sql/benchmarks/tpch/Tests/19-explain.stable.out
        sql/benchmarks/tpch/Tests/19-plan.stable.out
        sql/benchmarks/tpch/Tests/20-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/20-plan.stable.out
        tools/merovingian/daemon/client.c
        tools/merovingian/daemon/connections.c
        tools/merovingian/daemon/controlrunner.c
        tools/merovingian/daemon/discoveryrunner.c
        tools/merovingian/daemon/forkmserver.c
        tools/merovingian/daemon/handlers.c
        tools/merovingian/daemon/handlers.h
        tools/merovingian/daemon/merovingian.c
        tools/merovingian/daemon/merovingian.h
        tools/merovingian/daemon/multiplex-funnel.c
        tools/merovingian/utils/properties.c
Branch: oltp
Log Message:

Merge with default


diffs (truncated from 2139 to 300 lines):

diff --git a/common/utils/msabaoth.c b/common/utils/msabaoth.c
--- a/common/utils/msabaoth.c
+++ b/common/utils/msabaoth.c
@@ -594,6 +594,85 @@ msab_getSingleStatus(const char *pathbuf
        sdb->path = strdup(buf);
        sdb->dbname = sdb->path + strlen(sdb->path) - strlen(dbname);
 
+
+       /* check the state of the server by looking at its gdk lock:
+        * - if we can lock it, the server has crashed or isn't running
+        * - if we can't open it because it's locked, the server is
+        *   running
+        * - to distinguish between a crash and proper shutdown, consult
+        *   the uplog
+        * - one exception to all above; if this is the same process, we
+        *   cannot lock (it always succeeds), hence, if we have the
+        *   same signature, we assume running if the uplog states so.
+        */
+       snprintf(buf, sizeof(buf), "%s/%s/%s", pathbuf, dbname,
+                        _sabaoth_internal_uuid);
+       if (stat(buf, &statbuf) != -1) {
+               /* database has the same process signature as ours, which
+                * means, it must be us, rely on the uplog state */
+               snprintf(log, sizeof(log), "%s/%s/%s", pathbuf, dbname, 
UPLOGFILE);
+               if ((f = fopen(log, "r")) != NULL) {
+                       (void)fseek(f, -1, SEEK_END);
+                       if (fread(data, 1, 1, f) != 1) {
+                               /* the log is empty, assume no crash */
+                               sdb->state = SABdbInactive;
+                       } else if (data[0] == '\t') {
+                               /* see if the database has finished starting */
+                               snprintf(buf, sizeof(buf), "%s/%s/%s",
+                                                pathbuf, dbname, STARTEDFILE);
+                               if (stat(buf, &statbuf) == -1) {
+                                       sdb->state = SABdbStarting;
+                               } else {
+                                       sdb->state = SABdbRunning;
+                               }
+                       } else { /* should be \n */
+                               sdb->state = SABdbInactive;
+                       }
+                       (void)fclose(f);
+               }
+       } else if ((snprintf(buf, sizeof(buf), "%s/%s/%s", pathbuf, dbname, 
".gdk_lock") > 0) & /* no typo */
+                          ((fd = MT_lockf(buf, F_TEST, 4, 1)) == -2)) {
+               /* Locking failed; this can be because the lockfile couldn't
+                * be created.  Probably there is no Mserver running for
+                * that case also.
+                */
+               sdb->state = SABdbInactive;
+       } else if (fd == -1) {
+               /* file is locked, so mserver is running, see if the database
+                * has finished starting */
+               snprintf(buf, sizeof(buf), "%s/%s/%s",
+                                pathbuf, dbname, STARTEDFILE);
+               if (stat(buf, &statbuf) == -1) {
+                       sdb->state = SABdbStarting;
+               } else {
+                       sdb->state = SABdbRunning;
+               }
+       } else {
+               /* file is not locked, check for a crash in the uplog */
+               snprintf(log, sizeof(log), "%s/%s/%s", pathbuf, dbname, 
UPLOGFILE);
+               if ((f = fopen(log, "r")) != NULL) {
+                       (void)fseek(f, -1, SEEK_END);
+                       if (fread(data, 1, 1, f) != 1) {
+                               /* the log is empty, assume no crash */
+                               sdb->state = SABdbInactive;
+                       } else if (data[0] == '\n') {
+                               sdb->state = SABdbInactive;
+                       } else { /* should be \t */
+                               sdb->state = SABdbCrashed;
+                       }
+                       (void)fclose(f);
+               } else {
+                       /* no uplog, so presumably never started */
+                       sdb->state = SABdbInactive;
+               }
+       }
+       snprintf(buf, sizeof(buf), "%s/%s/%s", pathbuf, dbname, 
MAINTENANCEFILE);
+       if (stat(buf, &statbuf) == -1) {
+               sdb->locked = 0;
+       } else {
+               sdb->locked = 1;
+       }
+
        /* add scenarios that are supported */
        sdb->scens = NULL;
        snprintf(buf, sizeof(buf), "%s/%s/%s", pathbuf, dbname, SCENARIOFILE);
@@ -638,84 +717,6 @@ msab_getSingleStatus(const char *pathbuf
                (void)fclose(f);
        }
 
-
-       /* check the state of the server by looking at its gdk lock:
-        * - if we can lock it, the server has crashed or isn't running
-        * - if we can't open it because it's locked, the server is
-        *   running
-        * - to distinguish between a crash and proper shutdown, consult
-        *   the uplog
-        * - one exception to all above; if this is the same process, we
-        *   cannot lock (it always succeeds), hence, if we have the
-        *   same signature, we assume running if the uplog states so.
-        */
-       snprintf(buf, sizeof(buf), "%s/%s/%s", pathbuf, dbname,
-                        _sabaoth_internal_uuid);
-       if (stat(buf, &statbuf) != -1) {
-               /* database has the same process signature as ours, which
-                * means, it must be us, rely on the uplog state */
-               snprintf(log, sizeof(log), "%s/%s/%s", pathbuf, dbname, 
UPLOGFILE);
-               if ((f = fopen(log, "r")) != NULL) {
-                       (void)fseek(f, -1, SEEK_END);
-                       if (fread(data, 1, 1, f) != 1) {
-                               /* the log is empty, assume no crash */
-                               sdb->state = SABdbInactive;
-                       } else if (data[0] == '\t') {
-                               /* see if the database has finished starting */
-                               snprintf(buf, sizeof(buf), "%s/%s/%s",
-                                                pathbuf, dbname, STARTEDFILE);
-                               if (stat(buf, &statbuf) == -1) {
-                                       sdb->state = SABdbStarting;
-                               } else {
-                                       sdb->state = SABdbRunning;
-                               }
-                       } else { /* should be \n */
-                               sdb->state = SABdbInactive;
-                       }
-                       (void)fclose(f);
-               }
-       } else if ((snprintf(buf, sizeof(buf), "%s/%s/%s", pathbuf, dbname, 
".gdk_lock") > 0) & /* no typo */
-                          ((fd = MT_lockf(buf, F_TEST, 4, 1)) == -2)) {
-               /* Locking failed; this can be because the lockfile couldn't
-                * be created.  Probably there is no Mserver running for
-                * that case also.
-                */
-               sdb->state = SABdbInactive;
-       } else if (fd == -1) {
-               /* lock denied, so mserver is running, see if the database
-                * has finished starting */
-               snprintf(buf, sizeof(buf), "%s/%s/%s",
-                                pathbuf, dbname, STARTEDFILE);
-               if (stat(buf, &statbuf) == -1) {
-                       sdb->state = SABdbStarting;
-               } else {
-                       sdb->state = SABdbRunning;
-               }
-       } else {
-               /* locking succeed, check for a crash in the uplog */
-               snprintf(log, sizeof(log), "%s/%s/%s", pathbuf, dbname, 
UPLOGFILE);
-               if ((f = fopen(log, "r")) != NULL) {
-                       (void)fseek(f, -1, SEEK_END);
-                       if (fread(data, 1, 1, f) != 1) {
-                               /* the log is empty, assume no crash */
-                               sdb->state = SABdbInactive;
-                       } else if (data[0] == '\n') {
-                               sdb->state = SABdbInactive;
-                       } else { /* should be \t */
-                               sdb->state = SABdbCrashed;
-                       }
-                       (void)fclose(f);
-               } else {
-                       /* no uplog, so presumably never started */
-                       sdb->state = SABdbInactive;
-               }
-       }
-       snprintf(buf, sizeof(buf), "%s/%s/%s", pathbuf, dbname, 
MAINTENANCEFILE);
-       if (stat(buf, &statbuf) == -1) {
-               sdb->locked = 0;
-       } else {
-               sdb->locked = 1;
-       }
        return sdb;
 }
 
diff --git a/sql/benchmarks/tpch/Tests/01-explain.stable.out 
b/sql/benchmarks/tpch/Tests/01-explain.stable.out
--- a/sql/benchmarks/tpch/Tests/01-explain.stable.out
+++ b/sql/benchmarks/tpch/Tests/01-explain.stable.out
@@ -55,14 +55,14 @@ function user.main():void;
     X_1244 := bat.new(nil:str);
     X_1251 := bat.append(X_1244,"sys.lineitem");
     X_1261 := bat.append(X_1251,"sys.lineitem");
-    X_1267 := bat.append(X_1261,"sys.L2");
-    X_1277 := bat.append(X_1267,"sys.L4");
-    X_1284 := bat.append(X_1277,"sys.L6");
-    X_1292 := bat.append(X_1284,"sys.L10");
-    X_1300 := bat.append(X_1292,"sys.L12");
-    X_1310 := bat.append(X_1300,"sys.L14");
-    X_1317 := bat.append(X_1310,"sys.L16");
-    X_1324 := bat.append(X_1317,"sys.L20");
+    X_1267 := bat.append(X_1261,"sys.L5");
+    X_1277 := bat.append(X_1267,"sys.L10");
+    X_1284 := bat.append(X_1277,"sys.L13");
+    X_1292 := bat.append(X_1284,"sys.L16");
+    X_1300 := bat.append(X_1292,"sys.L21");
+    X_1310 := bat.append(X_1300,"sys.L24");
+    X_1317 := bat.append(X_1310,"sys.L27");
+    X_1324 := bat.append(X_1317,"sys.L32");
     X_1246 := bat.new(nil:str);
     X_1253 := bat.append(X_1246,"l_returnflag");
     X_1262 := bat.append(X_1253,"l_linestatus");
diff --git a/sql/benchmarks/tpch/Tests/01-explain.stable.out.int128 
b/sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
--- a/sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
+++ b/sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
@@ -50,112 +50,112 @@ Ready.
 % .explain # table_name
 % mal # name
 % clob # type
-% 109 # length
+% 124 # length
 function user.main():void;
-    X_844 := bat.new(nil:str);
-    X_851 := bat.append(X_844,"sys.lineitem");
-    X_861 := bat.append(X_851,"sys.lineitem");
-    X_867 := bat.append(X_861,"sys.L5");
-    X_877 := bat.append(X_867,"sys.L10");
-    X_884 := bat.append(X_877,"sys.L13");
-    X_892 := bat.append(X_884,"sys.L16");
-    X_900 := bat.append(X_892,"sys.L21");
-    X_910 := bat.append(X_900,"sys.L24");
-    X_917 := bat.append(X_910,"sys.L27");
-    X_924 := bat.append(X_917,"sys.L32");
-    X_846 := bat.new(nil:str);
-    X_853 := bat.append(X_846,"l_returnflag");
-    X_862 := bat.append(X_853,"l_linestatus");
-    X_869 := bat.append(X_862,"sum_qty");
-    X_879 := bat.append(X_869,"sum_base_price");
-    X_886 := bat.append(X_879,"sum_disc_price");
-    X_894 := bat.append(X_886,"sum_charge");
-    X_902 := bat.append(X_894,"avg_qty");
-    X_912 := bat.append(X_902,"avg_price");
-    X_919 := bat.append(X_912,"avg_disc");
-    X_926 := bat.append(X_919,"count_order");
-    X_847 := bat.new(nil:str);
-    X_855 := bat.append(X_847,"char");
-    X_864 := bat.append(X_855,"char");
-    X_871 := bat.append(X_864,"decimal");
-    X_881 := bat.append(X_871,"decimal");
-    X_888 := bat.append(X_881,"decimal");
-    X_896 := bat.append(X_888,"decimal");
-    X_904 := bat.append(X_896,"double");
-    X_914 := bat.append(X_904,"double");
-    X_921 := bat.append(X_914,"double");
-    X_928 := bat.append(X_921,"bigint");
-    X_848 := bat.new(nil:int);
-    X_857 := bat.append(X_848,1);
-    X_865 := bat.append(X_857,1);
-    X_873 := bat.append(X_865,39);
-    X_882 := bat.append(X_873,39);
-    X_889 := bat.append(X_882,39);
-    X_897 := bat.append(X_889,39);
-    X_906 := bat.append(X_897,53);
-    X_915 := bat.append(X_906,53);
-    X_922 := bat.append(X_915,53);
-    X_930 := bat.append(X_922,64);
-    X_850 := bat.new(nil:int);
-    X_859 := bat.append(X_850,0);
-    X_866 := bat.append(X_859,0);
-    X_875 := bat.append(X_866,2);
-    X_883 := bat.append(X_875,2);
-    X_890 := bat.append(X_883,4);
-    X_898 := bat.append(X_890,6);
-    X_908 := bat.append(X_898,0);
-    X_916 := bat.append(X_908,0);
-    X_923 := bat.append(X_916,0);
-    X_932 := bat.append(X_923,0);
-    X_710 := sql.mvc();
-    X_714:bat[:date] := sql.bind(X_710,"sys","lineitem","l_shipdate",0);
-    C_711:bat[:oid] := sql.tid(X_710,"sys","lineitem");
-    X_726:date := mtime.date_sub_msec_interval("1998-12-01",7776000000);
-    C_727 := algebra.thetasubselect(X_714,C_711,X_726,"<=");
-    X_729:bat[:str] := sql.bind(X_710,"sys","lineitem","l_linestatus",0);
-    X_736 := algebra.projection(C_727,X_729);
-    X_737:bat[:str] := sql.bind(X_710,"sys","lineitem","l_returnflag",0);
-    X_744 := algebra.projection(C_727,X_737);
-    (X_745,r1_44,r2_44) := group.subgroup(X_744);
-    (X_748,r1_47,r2_47) := group.subgroupdone(X_736,X_745);
-    X_751 := algebra.projection(r1_47,X_736);
-    X_752 := algebra.projection(r1_47,X_744);
-    X_763:bat[:lng] := sql.bind(X_710,"sys","lineitem","l_quantity",0);
-    X_770 := algebra.projection(C_727,X_763);
-    X_771:bat[:hge] := aggr.subsum(X_770,X_748,r1_47,true,true);
-    X_775:bat[:lng] := sql.bind(X_710,"sys","lineitem","l_extendedprice",0);
-    X_782 := algebra.projection(C_727,X_775);
-    X_783:bat[:hge] := aggr.subsum(X_782,X_748,r1_47,true,true);
-    X_793:bat[:lng] := sql.bind(X_710,"sys","lineitem","l_discount",0);
-    X_800 := algebra.projection(C_727,X_793);
-    X_801:bat[:lng] := batcalc.-(100:lng,X_800);
-    X_803:bat[:hge] := batcalc.*(X_782,X_801);
-    X_805:bat[:hge] := aggr.subsum(X_803,X_748,r1_47,true,true);
-    X_813:bat[:lng] := sql.bind(X_710,"sys","lineitem","l_tax",0);
-    X_820 := algebra.projection(C_727,X_813);
-    X_824:bat[:lng] := batcalc.+(X_820,100:lng);
-    X_827:bat[:hge] := batcalc.*(X_803,X_824);
-    X_828:bat[:hge] := aggr.subsum(X_827,X_748,r1_47,true,true);
-    X_830:bat[:dbl] := batcalc.dbl(2,X_770);
-    X_832:bat[:dbl] := aggr.subavg(X_830,X_748,r1_47,true,true);
-    X_834:bat[:dbl] := batcalc.dbl(2,X_782);
-    X_835:bat[:dbl] := aggr.subavg(X_834,X_748,r1_47,true,true);
-    X_837:bat[:dbl] := batcalc.dbl(2,X_800);
-    X_838:bat[:dbl] := aggr.subavg(X_837,X_748,r1_47,true,true);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to