blob: 77bcb5ca8bcfd2540c5fb37d017be8e2c5f2a693 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
subdir = src/backend/catalog/caql
top_builddir = ../../../..
include $(top_builddir)/src/Makefile.global
OBJS = caqlanalyze.o catquery.o caqlaccess.o gram.o
FLEXFLAGS = -CF
include $(top_srcdir)/src/backend/common.mk
# Build a list of known source files with CaQL statements -- should
# rebuild catquery.c if any of these change.
# Note that caql.files "find" will discover CaQL statements in files
# that are *not* in this list, which is correct. Amend this list as
# needed with latest contents of caql.files to improve Makefile
# dependencies for catquery.c regeneration
CAQL_CQL_SRCS := $(addprefix $(top_srcdir)/src/backend/,\
access/common/tupdesc.c \
access/heap/heapam.c \
catalog/aclchk.c \
catalog/dependency.c \
catalog/gp_fastsequence.c \
catalog/heap.c \
catalog/index.c \
catalog/namespace.c \
catalog/pg_aggregate.c \
catalog/pg_appendonly.c \
catalog/pg_attribute_encoding.c \
catalog/pg_compression.c \
catalog/pg_constraint.c \
catalog/pg_conversion.c \
catalog/pg_depend.c \
catalog/pg_extprotocol.c \
catalog/pg_exttable.c \
catalog/pg_namespace.c \
catalog/pg_operator.c \
catalog/pg_proc.c \
catalog/pg_proc_callback.c \
catalog/pg_shdepend.c \
catalog/pg_type.c \
catalog/toasting.c \
cdb/cdbcat.c \
cdb/cdbdisp.c \
cdb/cdbpartindex.c \
cdb/cdbpartition.c \
cdb/cdbpersistentbuild.c \
cdb/cdbsubselect.c \
cdb/cdbutil.c \
cdb/motion/tupser.c \
commands/aggregatecmds.c \
commands/analyze.c \
commands/cluster.c \
commands/comment.c \
commands/conversioncmds.c \
commands/dbcommands.c \
commands/extprotocolcmds.c \
commands/filespace.c \
commands/foreigncmds.c \
commands/functioncmds.c \
commands/indexcmds.c \
commands/opclasscmds.c \
commands/operatorcmds.c \
commands/proclang.c \
commands/schemacmds.c \
commands/sequence.c \
commands/tablecmds.c \
commands/tablespace.c \
commands/trigger.c \
commands/typecmds.c \
commands/user.c \
commands/vacuum.c \
commands/variable.c \
executor/functions.c \
executor/nodeAgg.c \
executor/nodeMergejoin.c \
executor/nodeWindow.c \
executor/spi.c \
optimizer/plan/planpartition.c \
optimizer/plan/planwindow.c \
optimizer/util/clauses.c \
optimizer/util/plancat.c \
optimizer/util/predtest.c \
parser/analyze.c \
parser/parse_clause.c \
parser/parse_coerce.c \
parser/parse_func.c \
parser/parse_node.c \
parser/parse_oper.c \
parser/parse_relation.c \
parser/parse_type.c \
parser/parse_utilcmd.c \
resourcemanager/resourcepool.c \
rewrite/rewriteDefine.c \
rewrite/rewriteRemove.c \
rewrite/rewriteSupport.c \
storage/large_object/inv_api.c \
tcop/utility.c \
utils/adt/acl.c \
utils/adt/dbsize.c \
utils/adt/format_type.c \
utils/adt/regproc.c \
utils/adt/ruleutils.c \
utils/adt/selfuncs.c \
utils/cache/lsyscache.c \
utils/cache/relcache.c \
utils/cache/typcache.c \
utils/fmgr/fmgr.c \
utils/fmgr/funcapi.c \
utils/gp/segadmin.c \
utils/init/miscinit.c \
utils/misc/superuser.c \
utils/resscheduler/resscheduler.c \
utils/sort/tuplesort.c \
)
ifneq ($(findstring -logquery, $(caql_logquery_FLAGS)),)
override CPPFLAGS := $(CPPFLAGS) -DCAQL_LOGQUERY
endif
gram.o: $(srcdir)/scan.c
$(srcdir)/gram.h: $(srcdir)/gram.c ;
$(srcdir)/gram.c: gram.y
ifdef BISON
$(BISON) -d $(BISONFLAGS) -o $@ $<
else
@$(missing) bison $< $@
endif
$(srcdir)/scan.c: scan.l
ifdef FLEX
$(FLEX) $(FLEXFLAGS) -o'$@' $<
# This is due to flex bug around unused variable yyg in <= 2.5.35
sed -i'' -e 's/^.* depending upon options\. \*\/$$//' $@
else
@$(missing) flex $< $@
endif
# Generate catquery.c by discovering cql statements in src files
caql_locktest_FLAGS := -lockcheck -readlock \
-holdlock \
-logquery \
-lwl=pg_type,pg_proc,pg_namespace,pg_operator,pg_opclass,pg_amop,pg_am,pg_amproc
# NOTE: to turn on query logging, do "make caql_logquery_FLAGS=-logquery"
caql.files: $(CAQL_CQL_SRCS) $(top_srcdir)/src/include/catalog/calico.pl
find $(top_srcdir)/ -name '*.c' | \
xargs grep -l cql | grep -v catquery | grep -v caqlaccess | \
grep -v mock/backend > caql.files
catquery.o: catquery.c
catquery.c: caql.files $(top_srcdir)/src/include/catalog/calico.pl
perl $(top_srcdir)/src/include/catalog/calico.pl \
-meta $(catdump_json) \
$(caql_logquery_FLAGS) \
-filemap caqlfilemap.json \
-uniqdef uniqdef.json \
-basedef basedef.json \
-gperf gperf.init -infiles caql.files > catquery.c.perl
sed -e 's/^#line [0-9]* "gperf.init"//' catquery.c.perl > catquery.c
# track the cql source files
cat caql.files | xargs openssl dgst -md5 -hex | cat > caql.md5
test:
echo $(caql_logquery_FLAGS)
echo $(caql_locktest_FLAGS)
clean:
rm -f gram.c gram.h scan.c \
catquery.c caql.files gperf.init caqlfilemap.json \
uniqdef.json basedef.json