| # 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 |