Changeset: 76ca14da7946 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=76ca14da7946
Added Files:
sql/backends/monet5/timetrails/70_timetrails.mal
sql/backends/monet5/timetrails/70_timetrails.sql
sql/backends/monet5/timetrails/Makefile.ag
sql/backends/monet5/timetrails/Makefile.am
sql/backends/monet5/timetrails/Makefile.in
sql/backends/monet5/timetrails/Makefile.msc
sql/backends/monet5/timetrails/timetrails.c
sql/backends/monet5/timetrails/timetrails.h
sql/backends/monet5/timetrails/timetrails.mal
sql/test/timetrails/Tests/All
sql/test/timetrails/Tests/derivative.sql
sql/test/timetrails/Tests/dictionary.sql
sql/test/timetrails/Tests/dictionary.stable.err
sql/test/timetrails/Tests/dictionary.stable.out
sql/test/timetrails/Tests/labels.sql
sql/test/timetrails/Tests/loaddb.sql
sql/test/timetrails/Tests/loaddb.stable.err
sql/test/timetrails/Tests/loaddb.stable.out
sql/test/timetrails/Tests/microbatch.sql
sql/test/timetrails/Tests/rieman.sql
sql/test/timetrails/Tests/simple_queries.sql
sql/test/timetrails/Tests/simple_queries.stable.err
sql/test/timetrails/Tests/simple_queries.stable.out
sql/test/timetrails/Tests/time_rollup.sql
sql/test/timetrails/Tests/time_rollup.stable.err
sql/test/timetrails/Tests/time_rollup.stable.out
sql/test/timetrails/Tests/windowfunction.sql
Modified Files:
sql/backends/monet5/Makefile.ag
Branch: timetrails
Log Message:
The basics for timeseries
The SQL catalog and support functions
and the collection of core queries required by Grafana
diffs (truncated from 2059 to 300 lines):
diff --git a/sql/backends/monet5/Makefile.ag b/sql/backends/monet5/Makefile.ag
--- a/sql/backends/monet5/Makefile.ag
+++ b/sql/backends/monet5/Makefile.ag
@@ -4,7 +4,7 @@
#
# Copyright 1997 - July 2008 CWI, August 2008 - 2017 MonetDB B.V.
-SUBDIRS = NOT_WIN32?vaults UDF LSST generator
+SUBDIRS = NOT_WIN32?vaults UDF LSST generator timetrails
INCLUDES = ../../include ../../common ../../storage ../../server \
../../../monetdb5/modules/atoms \
diff --git a/sql/backends/monet5/timetrails/70_timetrails.mal
b/sql/backends/monet5/timetrails/70_timetrails.mal
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/timetrails/70_timetrails.mal
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Copyright 1997 - July 2008 CWI, August 2008 - 2017 MonetDB B.V.
+
+# This announces the UDF module to the MAL interpreter
+
+include timetrails;
+
diff --git a/sql/backends/monet5/timetrails/70_timetrails.sql
b/sql/backends/monet5/timetrails/70_timetrails.sql
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/timetrails/70_timetrails.sql
@@ -0,0 +1,85 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Copyright 1997 - July 2008 CWI, August 2008 - 2017 MonetDB B.V.
+
+
+CREATE SCHEMA timetrails;
+
+CREATE TABLE timetrails.metrics (
+ name string PRIMARY KEY,
+ auth string, --(for later) The owner ticket for this metric
+ credit integer, --(for later)The volume of data allowed for this
metric
+ precision string , --time stamp precision
{millisecond,second,minute,hour,day,month,year, null}
+ retention string, --time stamp interval
{millisecond,second,minute,hour,day,month,year, null}
+ threshold integer, --max rows delayed in the Guardian cache
+ heartbeat integer, -- maximum delay (in ms) before forwarding
+ frozen boolean, --once defined its structure can not be changed
+ title string, --informative title
+ description string --short explanation
+);
+
+
+--Return the names of all known metric relations
+CREATE FUNCTION timetrails.metrics()
+RETURNS TABLE (metric string)
+BEGIN
+ RETURN SELECT m.name FROM timetrails.metrics m ORDER BY m.name;
+END;
+
+--Return the tags associated with a metric relation
+CREATE FUNCTION timetrails.tags(metric string)
+RETURNS TABLE (colname string)
+BEGIN
+ RETURN SELECT o.name AS colname
+ FROM sys.objects o, sys.tables t, sys.keys k
+ WHERE o.id = k.id AND k.table_id = t.id AND t.name = metric ORDER BY
o.nr;
+END;
+
+--Return the measure names for a metric relation
+CREATE FUNCTION timetrails.fields(metric string)
+RETURNS TABLE (colname string)
+BEGIN
+ RETURN SELECT c.name
+ FROM sys.columns c, sys.tables t
+ WHERE t.name= metric AND t.id = c.table_id AND
+ c.name NOT IN (SELECT o.name AS colname
+ FROM sys.objects o, sys.tables tt, sys.keys k WHERE
o.id = k.id AND k.table_id = tt.id AND tt.name = metric );
+END;
+
+--Return the preferred message layout and their type
+CREATE FUNCTION timetrails.getLayout(metric string)
+RETURNS TABLE( name string, type string)
+BEGIN
+ RETURN SELECT c.name, c.type FROM timetrails.metrics m, sys.tables t,
sys.columns c WHERE m.name = metric AND t.name = m.name and c.table_id= t.id;
+END;
+
+--Return the time precision for a metric relation
+CREATE FUNCTION timetrails.getPrecision(metric string)
+RETURNS string
+BEGIN
+ RETURN SELECT m.precision FROM timetrails.metrics m WHERE m.name = metric;
+END;
+
+--Return the retention period of a metric relation
+CREATE FUNCTION timetrails.getRetention(metric string)
+RETURNS string
+BEGIN
+ RETURN SELECT m.retention FROM timetrails.metrics m WHERE m.name = metric;
+END;
+
+--Return the title annotation
+CREATE FUNCTION timetrails.getTitle(metric string)
+RETURNS string
+BEGIN
+ RETURN SELECT m.title FROM timetrails.metrics m WHERE m.name = metric;
+END;
+
+--Return the short help on a metric relation
+CREATE FUNCTION timetrails.getDescription(metric string)
+RETURNS string
+BEGIN
+ RETURN SELECT m.description FROM timetrails.metrics m WHERE m.name = metric;
+END;
+
diff --git a/sql/backends/monet5/timetrails/Makefile.ag
b/sql/backends/monet5/timetrails/Makefile.ag
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/timetrails/Makefile.ag
@@ -0,0 +1,47 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Copyright 1997 - July 2008 CWI, August 2008 - 2017 MonetDB B.V.
+
+INCLUDES = .. \
+ ../../../include \
+ ../../../common \
+ ../../../storage \
+ ../../../server \
+ ../../../../monetdb5/modules/atoms \
+ ../../../../monetdb5/modules/kernel \
+ ../../../../monetdb5/mal \
+ ../../../../monetdb5/modules/mal \
+ ../../../../monetdb5/optimizer \
+ ../../../../common/options \
+ ../../../../common/stream \
+ ../../../../gdk
+
+lib__timetrails = {
+ MODULE
+ DIR = libdir/monetdb5
+ SOURCES = timetrails.c timetrails.h
+ LIBS = ../../../../monetdb5/tools/libmonetdb5 \
+ ../../../../gdk/libbat
+}
+
+headers_mal = {
+ HEADERS = mal
+ DIR = libdir/monetdb5
+ SOURCES = timetrails.mal
+}
+
+headers_sql = {
+ HEADERS = sql
+ DIR = libdir/monetdb5/createdb
+ SOURCES = 70_timetrails.sql
+}
+
+headers_autoload = {
+ HEADERS = mal
+ DIR = libdir/monetdb5/autoload
+ SOURCES = 70_timetrails.mal
+}
+
+EXTRA_DIST_DIR = Tests
diff --git a/sql/backends/monet5/timetrails/Makefile.am
b/sql/backends/monet5/timetrails/Makefile.am
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/timetrails/Makefile.am
@@ -0,0 +1,53 @@
+
+## This file is generated by autogen.py, do not edit
+## Process this file with automake to produce Makefile.in
+## autogen includes dependencies so automake doesn't need to generated them
+
+AUTOMAKE_OPTIONS = no-dependencies 1.4 foreign
+
+install-exec-local-70_timetrails.mal: 70_timetrails.mal
+ -mkdir -p $(DESTDIR)$(libdir)/monetdb5/autoload
+ -$(RM) $(DESTDIR)$(libdir)/monetdb5/autoload/70_timetrails.mal
+ $(INSTALL_DATA) $<
$(DESTDIR)$(libdir)/monetdb5/autoload/70_timetrails.mal
+
+uninstall-local-70_timetrails.mal:
+ $(RM) $(DESTDIR)$(libdir)/monetdb5/autoload/70_timetrails.mal
+
+timetrails.o timetrails.lo: timetrails.c timetrails.h
../../../include/sql_mem.h ../mal_backend.h ../../../server/sql_mvc.h
../../../server/../include/sql_mem.h ../../../../gdk/gdk.h
../../../server/../../gdk/gdk.h ../../../../gdk/gdk_system.h
../../../../gdk/gdk_atomic.h ../../../../gdk/gdk_posix.h
../../../../common/stream/stream.h ../../../../gdk/gdk_delta.h
../../../../gdk/gdk_hash.h ../../../../gdk/gdk_atoms.h
../../../../gdk/gdk_bbp.h ../../../../gdk/gdk_utils.h
../../../../gdk/../common/options/monet_options.h ../../../../gdk/gdk_calc.h
../../../server/sql_scan.h ../../../server/../include/sql_list.h
../../../include/sql_hash.h ../../../server/../../common/stream/stream.h
../../../server/../common/sql_types.h ../../../include/sql_list.h
../../../common/sql_string.h ../../../include/sql_catalog.h
../../../storage/sql_storage.h ../../../storage/../include/sql_catalog.h
../../../storage/../../gdk/gdk_logger.h ../../../server/../common/sql_backend.h
../../../include/sql_relation.
h ../../../common/sql_types.h ../../../common/../include/sql_mem.h
../../../common/../include/sql_list.h ../../../common/../include/sql_catalog.h
../../../common/../storage/sql_storage.h ../../../../gdk/gdk_logger.h
../../../common/../../common/stream/stream.h
../../../server/../include/sql_catalog.h
../../../server/../include/sql_relation.h
../../../server/../storage/sql_storage.h
../../../server/../include/sql_keyword.h ../../../server/sql_atom.h
../../../server/../include/sql_query.h ../../../common/sql_backend.h
../../../common/../include/sql_relation.h
../../../../monetdb5/mal/mal_session.h ../../../../monetdb5/mal/mal_scenario.h
../../../../monetdb5/mal/mal_import.h ../../../../monetdb5/mal/mal_function.h
../../../../monetdb5/mal/mal_instruction.h ../../../../monetdb5/mal/mal_type.h
../../../../monetdb5/mal/mal.h ../../../../monetdb5/mal/../../gdk/gdk.h
../../../../monetdb5/mal/../../gdk/gdk_system.h
../../../../monetdb5/mal/../../gdk/gdk_posix.h ../../../../monetdb5/mal/../..
/common/stream/stream.h ../../../../monetdb5/mal/../../gdk/gdk_delta.h
../../../../monetdb5/mal/../../gdk/gdk_hash.h
../../../../monetdb5/mal/../../gdk/gdk_atoms.h
../../../../monetdb5/mal/../../gdk/gdk_bbp.h
../../../../monetdb5/mal/../../gdk/gdk_utils.h
../../../../common/options/monet_options.h
../../../../monetdb5/mal/../../gdk/gdk_calc.h
../../../../monetdb5/mal/mal_stack.h ../../../../monetdb5/mal/mal_namespace.h
../../../../monetdb5/mal/mal_module.h ../../../../monetdb5/mal/mal_resolve.h
../../../../monetdb5/mal/mal_exception.h ../../../../monetdb5/mal/mal_errors.h
../../../../monetdb5/mal/mal_listing.h
../../../../monetdb5/mal/mal_interpreter.h
../../../../monetdb5/mal/mal_client.h ../../../../monetdb5/mal/mal_profiler.h
../../../../monetdb5/mal/mal_factory.h
../../../../monetdb5/modules/mal/tablet.h
../../../../monetdb5/modules/atoms/streams.h
../../../../monetdb5/modules/atoms/../../mal/mal.h
../../../../monetdb5/modules/atoms/../../../common/stream/stream_socket.h
../../.
./../monetdb5/modules/atoms/mtime.h
../../../../monetdb5/modules/atoms/../../../gdk/gdk.h
../../../../monetdb5/modules/atoms/../../mal/mal_exception.h
../../../../monetdb5/modules/atoms/blob.h
../../../../monetdb5/modules/mal/mkey.h
../../../../monetdb5/modules/atoms/str.h ../../../server/sql_privileges.h
../../../server/sql_decimal.h ../../../server/sql_qc.h
../../../server/sql_symbol.h ../../../server/sql_env.h
../../../server/sql_parser.h ../sql_statement.h
../../../../monetdb5/modules/mal/querylog.h ../../../storage/bat/bat_storage.h
../../../storage/bat/bat_utils.h ../sql_cast.h ../sql.h
+install-exec-local-timetrails.mal: timetrails.mal
+ -mkdir -p $(DESTDIR)$(libdir)/monetdb5
+ -$(RM) $(DESTDIR)$(libdir)/monetdb5/timetrails.mal
+ $(INSTALL_DATA) $< $(DESTDIR)$(libdir)/monetdb5/timetrails.mal
+
+uninstall-local-timetrails.mal:
+ $(RM) $(DESTDIR)$(libdir)/monetdb5/timetrails.mal
+
+AM_CPPFLAGS = -I$(srcdir) -I.. -I$(srcdir)/.. -I../../../include
-I$(srcdir)/../../../include -I../../../common -I$(srcdir)/../../../common
-I../../../storage -I$(srcdir)/../../../storage -I../../../server
-I$(srcdir)/../../../server -I../../../../monetdb5/modules/atoms
-I$(srcdir)/../../../../monetdb5/modules/atoms
-I../../../../monetdb5/modules/kernel
-I$(srcdir)/../../../../monetdb5/modules/kernel -I../../../../monetdb5/mal
-I$(srcdir)/../../../../monetdb5/mal -I../../../../monetdb5/modules/mal
-I$(srcdir)/../../../../monetdb5/modules/mal -I../../../../monetdb5/optimizer
-I$(srcdir)/../../../../monetdb5/optimizer -I../../../../common/options
-I$(srcdir)/../../../../common/options -I../../../../common/stream
-I$(srcdir)/../../../../common/stream -I../../../../gdk
-I$(srcdir)/../../../../gdk
+install-exec-local-70_timetrails.sql: 70_timetrails.sql
+ -mkdir -p $(DESTDIR)$(libdir)/monetdb5/createdb
+ -$(RM) $(DESTDIR)$(libdir)/monetdb5/createdb/70_timetrails.sql
+ $(INSTALL_DATA) $<
$(DESTDIR)$(libdir)/monetdb5/createdb/70_timetrails.sql
+
+uninstall-local-70_timetrails.sql:
+ $(RM) $(DESTDIR)$(libdir)/monetdb5/createdb/70_timetrails.sql
+
+dist-hook:
+ mkdir -p $(distdir)/Tests
+ cp -pR $(srcdir)/Tests/* $(distdir)/Tests
+lib_timetrails_la_CFLAGS=-DLIBTIMETRAILS $(AM_CFLAGS)
+timetrailsdir = $(libdir)/monetdb5
+lib_timetrails_la_LIBADD = ../../../../monetdb5/tools/libmonetdb5.la
../../../../gdk/libbat.la
+$(do)install-timetrailsLTLIBRARIES :
+lib_timetrails_la-timetrails.lo: timetrails.c timetrails.h
../../../include/sql_mem.h ../mal_backend.h ../../../server/sql_mvc.h
../../../server/../include/sql_mem.h ../../../../gdk/gdk.h
../../../server/../../gdk/gdk.h ../../../../gdk/gdk_system.h
../../../../gdk/gdk_atomic.h ../../../../gdk/gdk_posix.h
../../../../common/stream/stream.h ../../../../gdk/gdk_delta.h
../../../../gdk/gdk_hash.h ../../../../gdk/gdk_atoms.h
../../../../gdk/gdk_bbp.h ../../../../gdk/gdk_utils.h
../../../../gdk/../common/options/monet_options.h ../../../../gdk/gdk_calc.h
../../../server/sql_scan.h ../../../server/../include/sql_list.h
../../../include/sql_hash.h ../../../server/../../common/stream/stream.h
../../../server/../common/sql_types.h ../../../include/sql_list.h
../../../common/sql_string.h ../../../include/sql_catalog.h
../../../storage/sql_storage.h ../../../storage/../include/sql_catalog.h
../../../storage/../../gdk/gdk_logger.h ../../../server/../common/sql_backend.h
../../../include/sql_rela
tion.h ../../../common/sql_types.h ../../../common/../include/sql_mem.h
../../../common/../include/sql_list.h ../../../common/../include/sql_catalog.h
../../../common/../storage/sql_storage.h ../../../../gdk/gdk_logger.h
../../../common/../../common/stream/stream.h
../../../server/../include/sql_catalog.h
../../../server/../include/sql_relation.h
../../../server/../storage/sql_storage.h
../../../server/../include/sql_keyword.h ../../../server/sql_atom.h
../../../server/../include/sql_query.h ../../../common/sql_backend.h
../../../common/../include/sql_relation.h
../../../../monetdb5/mal/mal_session.h ../../../../monetdb5/mal/mal_scenario.h
../../../../monetdb5/mal/mal_import.h ../../../../monetdb5/mal/mal_function.h
../../../../monetdb5/mal/mal_instruction.h ../../../../monetdb5/mal/mal_type.h
../../../../monetdb5/mal/mal.h ../../../../monetdb5/mal/../../gdk/gdk.h
../../../../monetdb5/mal/../../gdk/gdk_system.h
../../../../monetdb5/mal/../../gdk/gdk_posix.h ../../../../monetdb5/mal/
../../common/stream/stream.h ../../../../monetdb5/mal/../../gdk/gdk_delta.h
../../../../monetdb5/mal/../../gdk/gdk_hash.h
../../../../monetdb5/mal/../../gdk/gdk_atoms.h
../../../../monetdb5/mal/../../gdk/gdk_bbp.h
../../../../monetdb5/mal/../../gdk/gdk_utils.h
../../../../common/options/monet_options.h
../../../../monetdb5/mal/../../gdk/gdk_calc.h
../../../../monetdb5/mal/mal_stack.h ../../../../monetdb5/mal/mal_namespace.h
../../../../monetdb5/mal/mal_module.h ../../../../monetdb5/mal/mal_resolve.h
../../../../monetdb5/mal/mal_exception.h ../../../../monetdb5/mal/mal_errors.h
../../../../monetdb5/mal/mal_listing.h
../../../../monetdb5/mal/mal_interpreter.h
../../../../monetdb5/mal/mal_client.h ../../../../monetdb5/mal/mal_profiler.h
../../../../monetdb5/mal/mal_factory.h
../../../../monetdb5/modules/mal/tablet.h
../../../../monetdb5/modules/atoms/streams.h
../../../../monetdb5/modules/atoms/../../mal/mal.h
../../../../monetdb5/modules/atoms/../../../common/stream/stream_socket.h ..
/../../../monetdb5/modules/atoms/mtime.h
../../../../monetdb5/modules/atoms/../../../gdk/gdk.h
../../../../monetdb5/modules/atoms/../../mal/mal_exception.h
../../../../monetdb5/modules/atoms/blob.h
../../../../monetdb5/modules/mal/mkey.h
../../../../monetdb5/modules/atoms/str.h ../../../server/sql_privileges.h
../../../server/sql_decimal.h ../../../server/sql_qc.h
../../../server/sql_symbol.h ../../../server/sql_env.h
../../../server/sql_parser.h ../sql_statement.h
../../../../monetdb5/modules/mal/querylog.h ../../../storage/bat/bat_storage.h
../../../storage/bat/bat_utils.h ../sql_cast.h ../sql.h
+ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES)
$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_timetrails_la_CFLAGS) $(CFLAGS)
$(timetrails_CFLAGS) -c -o lib_timetrails_la-timetrails.lo `test -f
'timetrails.c' || echo '$(srcdir)/'`timetrails.c
+nodist_lib_timetrails_la_SOURCES =
+dist_lib_timetrails_la_SOURCES = timetrails.c timetrails.h
+lib_timetrails_la_LDFLAGS = -module -avoid-version
+BUILT_SOURCES =
+MOSTLYCLEANFILES =
+EXTRA_DIST = Makefile.ag Makefile.msc 70_timetrails.mal 70_timetrails.sql
timetrails.c timetrails.h timetrails.mal
+timetrails_LTLIBRARIES = lib_timetrails.la
+uninstall-local: uninstall-local-70_timetrails.mal
uninstall-local-70_timetrails.sql uninstall-local-timetrails.mal
+install-exec-local: install-exec-local-70_timetrails.mal
install-exec-local-70_timetrails.sql install-exec-local-timetrails.mal
+
+ include $(top_srcdir)/buildtools/conf/rules.mk
diff --git a/sql/backends/monet5/timetrails/Makefile.in
b/sql/backends/monet5/timetrails/Makefile.in
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/timetrails/Makefile.in
@@ -0,0 +1,861 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list