LCOV - code coverage report
Current view: top level - monetdb5/optimizer - opt_prelude.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 256 256 100.0 %
Date: 2024-04-26 00:35:57 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /*
       2             :  * SPDX-License-Identifier: MPL-2.0
       3             :  *
       4             :  * This Source Code Form is subject to the terms of the Mozilla Public
       5             :  * License, v. 2.0.  If a copy of the MPL was not distributed with this
       6             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       7             :  *
       8             :  * Copyright 2024 MonetDB Foundation;
       9             :  * Copyright August 2008 - 2023 MonetDB B.V.;
      10             :  * Copyright 1997 - July 2008 CWI.
      11             :  */
      12             : 
      13             : /*
      14             :  * opt_prelude
      15             :  * M. Kersten
      16             :  * These definitions are handy to have around in the optimizer
      17             :  */
      18             : #include "monetdb_config.h"
      19             : #include "opt_prelude.h"
      20             : #include "optimizer_private.h"
      21             : 
      22             : /* ! please keep this list sorted for easier maintenance ! */
      23             : const char *affectedRowsRef;
      24             : const char *aggrRef;
      25             : const char *alarmRef;
      26             : const char *algebraRef;
      27             : const char *alter_add_range_partitionRef;
      28             : const char *alter_add_tableRef;
      29             : const char *alter_add_value_partitionRef;
      30             : const char *alter_del_tableRef;
      31             : const char *alter_seqRef;
      32             : const char *alter_set_tableRef;
      33             : const char *alter_tableRef;
      34             : const char *alter_userRef;
      35             : const char *appendBulkRef;
      36             : const char *appendRef;
      37             : const char *assertRef;
      38             : const char *avgRef;
      39             : const char *bandjoinRef;
      40             : const char *batalgebraRef;
      41             : const char *batcalcRef;
      42             : const char *batcapiRef;
      43             : const char *batmalRef;
      44             : const char *batmkeyRef;
      45             : const char *batmmathRef;
      46             : const char *batmtimeRef;
      47             : const char *batpyapi3Ref;
      48             : const char *batrapiRef;
      49             : const char *batRef;
      50             : const char *batsqlRef;
      51             : const char *batstrRef;
      52             : const char *bbpRef;
      53             : const char *betweenRef;
      54             : const char *binddbatRef;
      55             : const char *bindidxRef;
      56             : const char *bindRef;
      57             : const char *blockRef;
      58             : const char *bstreamRef;
      59             : const char *calcRef;
      60             : const char *capiRef;
      61             : const char *claimRef;
      62             : const char *clear_tableRef;
      63             : const char *columnBindRef;
      64             : const char *comment_onRef;
      65             : const char *compressRef;
      66             : const char *connectRef;
      67             : const char *containsRef;
      68             : const char *copy_fromRef;
      69             : const char *corrRef;
      70             : const char *count_no_nilRef;
      71             : const char *countRef;
      72             : const char *create_functionRef;
      73             : const char *create_roleRef;
      74             : const char *create_schemaRef;
      75             : const char *create_seqRef;
      76             : const char *create_tableRef;
      77             : const char *create_triggerRef;
      78             : const char *create_typeRef;
      79             : const char *create_userRef;
      80             : const char *create_viewRef;
      81             : const char *crossRef;
      82             : const char *cume_distRef;
      83             : const char *dataflowRef;
      84             : const char *dblRef;
      85             : const char *decompressRef;
      86             : const char *defineRef;
      87             : const char *deleteRef;
      88             : const char *deltaRef;
      89             : const char *dense_rankRef;
      90             : const char *dependRef;
      91             : const char *deregisterRef;
      92             : const char *dictRef;
      93             : const char *diffcandRef;
      94             : const char *differenceRef;
      95             : const char *disconnectRef;
      96             : const char *divRef;
      97             : const char *drop_constraintRef;
      98             : const char *drop_functionRef;
      99             : const char *drop_indexRef;
     100             : const char *drop_roleRef;
     101             : const char *drop_schemaRef;
     102             : const char *drop_seqRef;
     103             : const char *drop_tableRef;
     104             : const char *drop_triggerRef;
     105             : const char *drop_typeRef;
     106             : const char *drop_userRef;
     107             : const char *drop_viewRef;
     108             : const char *emptybindidxRef;
     109             : const char *emptybindRef;
     110             : const char *endswithjoinRef;
     111             : const char *eqRef;
     112             : const char *evalRef;
     113             : const char *execRef;
     114             : const char *export_bin_columnRef;
     115             : const char *exportOperationRef;
     116             : const char *export_tableRef;
     117             : const char *fetchRef;
     118             : const char *findRef;
     119             : const char *firstnRef;
     120             : const char *first_valueRef;
     121             : const char *forRef;
     122             : const char *generatorRef;
     123             : const char *getRef;
     124             : const char *getTraceRef;
     125             : const char *getVariableRef;
     126             : const char *grant_functionRef;
     127             : const char *grantRef;
     128             : const char *grant_rolesRef;
     129             : const char *groupbyRef;
     130             : const char *groupdoneRef;
     131             : const char *groupRef;
     132             : const char *growRef;
     133             : const char *hgeRef;
     134             : const char *identityRef;
     135             : const char *ifthenelseRef;
     136             : const char *importColumnRef;
     137             : const char *intersectcandRef;
     138             : const char *intersectRef;
     139             : const char *intRef;
     140             : const char *ioRef;
     141             : const char *iteratorRef;
     142             : const char *joinRef;
     143             : const char *jsonRef;
     144             : const char *lagRef;
     145             : const char *languageRef;
     146             : const char *last_valueRef;
     147             : const char *leadRef;
     148             : const char *leftjoinRef;
     149             : const char *likejoinRef;
     150             : const char *likeRef;
     151             : const char *likeselectRef;
     152             : const char *lockRef;
     153             : const char *lookupRef;
     154             : const char *malRef;
     155             : const char *manifoldRef;
     156             : const char *mapiRef;
     157             : const char *markjoinRef;
     158             : const char *markselectRef;
     159             : const char *maskRef;
     160             : const char *matRef;
     161             : const char *maxlevenshteinRef;
     162             : const char *maxRef;
     163             : const char *mdbRef;
     164             : const char *mergecandRef;
     165             : const char *mergepackRef;
     166             : const char *mergetableRef;
     167             : const char *minjarowinklerRef;
     168             : const char *minRef;
     169             : const char *minusRef;
     170             : const char *mirrorRef;
     171             : const char *mitosisRef;
     172             : const char *mmathRef;
     173             : const char *modRef;
     174             : const char *mtimeRef;
     175             : const char *mulRef;
     176             : const char *multiplexRef;
     177             : const char *mvcRef;
     178             : const char *newRef;
     179             : const char *nextRef;
     180             : const char *not_likeRef;
     181             : const char *notRef;
     182             : const char *not_uniqueRef;
     183             : const char *nth_valueRef;
     184             : const char *ntileRef;
     185             : const char *outercrossRef;
     186             : const char *outerjoinRef;
     187             : const char *outerselectRef;
     188             : const char *packIncrementRef;
     189             : const char *packRef;
     190             : const char *parametersRef;
     191             : const char *passRef;
     192             : const char *percent_rankRef;
     193             : const char *plusRef;
     194             : const char *predicateRef;
     195             : const char *printRef;
     196             : const char *prodRef;
     197             : const char *profilerRef;
     198             : const char *projectdeltaRef;
     199             : const char *projectionpathRef;
     200             : const char *projectionRef;
     201             : const char *projectRef;
     202             : const char *putRef;
     203             : const char *pyapi3Ref;
     204             : const char *querylogRef;
     205             : const char *raiseRef;
     206             : const char *rangejoinRef;
     207             : const char *rankRef;
     208             : const char *rapiRef;
     209             : const char *reconnectRef;
     210             : const char *registerRef;
     211             : const char *register_supervisorRef;
     212             : const char *remapRef;
     213             : const char *remoteRef;
     214             : const char *rename_columnRef;
     215             : const char *rename_schemaRef;
     216             : const char *rename_tableRef;
     217             : const char *rename_userRef;
     218             : const char *renumberRef;
     219             : const char *replaceRef;
     220             : const char *resultSetRef;
     221             : const char *revoke_functionRef;
     222             : const char *revokeRef;
     223             : const char *revoke_rolesRef;
     224             : const char *row_numberRef;
     225             : const char *rpcRef;
     226             : const char *rsColumnRef;
     227             : const char *rtreeRef;
     228             : const char *sampleRef;
     229             : const char *selectNotNilRef;
     230             : const char *selectRef;
     231             : const char *semaRef;
     232             : const char *semijoinRef;
     233             : const char *seriesRef;
     234             : const char *setAccessRef;
     235             : const char *set_protocolRef;
     236             : const char *setVariableRef;
     237             : const char *singleRef;
     238             : const char *sliceRef;
     239             : const char *sortRef;
     240             : const char *sqlcatalogRef;
     241             : const char *sqlRef;
     242             : const char *startswithjoinRef;
     243             : const char *stoptraceRef;
     244             : const char *streamsRef;
     245             : const char *strimpsRef;
     246             : const char *strRef;
     247             : const char *subavgRef;
     248             : const char *subcountRef;
     249             : const char *subdeltaRef;
     250             : const char *subeval_aggrRef;
     251             : const char *subgroupdoneRef;
     252             : const char *subgroupRef;
     253             : const char *submaxRef;
     254             : const char *subminRef;
     255             : const char *subprodRef;
     256             : const char *subsliceRef;
     257             : const char *subsumRef;
     258             : const char *subuniformRef;
     259             : const char *sumRef;
     260             : const char *takeRef;
     261             : const char *thetajoinRef;
     262             : const char *thetaselectRef;
     263             : const char *tidRef;
     264             : const char *transaction_abortRef;
     265             : const char *transaction_beginRef;
     266             : const char *transaction_commitRef;
     267             : const char *transactionRef;
     268             : const char *transaction_releaseRef;
     269             : const char *transaction_rollbackRef;
     270             : const char *umaskRef;
     271             : const char *uniqueRef;
     272             : const char *unlockRef;
     273             : const char *updateRef;
     274             : const char *userRef;
     275             : const char *window_boundRef;
     276             : const char *zero_or_oneRef;
     277             : /* ! please keep this list sorted for easier maintenance ! */
     278             : 
     279             : void
     280         341 : optimizerInit(void)
     281             : {
     282             : /* ! please keep this list sorted for easier maintenance ! */
     283         341 :         affectedRowsRef = putName("affectedRows");
     284         341 :         aggrRef = putName("aggr");
     285         341 :         alarmRef = putName("alarm");
     286         341 :         algebraRef = putName("algebra");
     287         341 :         alter_add_range_partitionRef = putName("alter_add_range_partition");
     288         341 :         alter_add_tableRef = putName("alter_add_table");
     289         341 :         alter_add_value_partitionRef = putName("alter_add_value_partition");
     290         341 :         alter_del_tableRef = putName("alter_del_table");
     291         341 :         alter_seqRef = putName("alter_seq");
     292         341 :         alter_set_tableRef = putName("alter_set_table");
     293         341 :         alter_tableRef = putName("alter_table");
     294         341 :         alter_userRef = putName("alter_user");
     295         341 :         appendBulkRef = putName("appendBulk");
     296         341 :         appendRef = putName("append");
     297         341 :         assertRef = putName("assert");
     298         341 :         avgRef = putName("avg");
     299         341 :         bandjoinRef = putName("bandjoin");
     300         341 :         batalgebraRef = putName("batalgebra");
     301         341 :         batcalcRef = putName("batcalc");
     302         341 :         batcapiRef = putName("batcapi");
     303         341 :         batmalRef = putName("batmal");
     304         341 :         batmkeyRef = putName("batmkey");
     305         341 :         batmmathRef = putName("batmmath");
     306         341 :         batmtimeRef = putName("batmtime");
     307         341 :         batpyapi3Ref = putName("batpyapi3");
     308         341 :         batrapiRef = putName("batrapi");
     309         341 :         batRef = putName("bat");
     310         341 :         batsqlRef = putName("batsql");
     311         341 :         batstrRef = putName("batstr");
     312         341 :         bbpRef = putName("bbp");
     313         341 :         betweenRef = putName("between");
     314         341 :         binddbatRef = putName("bind_dbat");
     315         341 :         bindidxRef = putName("bind_idxbat");
     316         341 :         bindRef = putName("bind");
     317         341 :         blockRef = putName("block");
     318         341 :         bstreamRef = putName("bstream");
     319         341 :         calcRef = putName("calc");
     320         341 :         capiRef = putName("capi");
     321         341 :         claimRef = putName("claim");
     322         341 :         clear_tableRef = putName("clear_table");
     323         341 :         columnBindRef = putName("columnBind");
     324         341 :         comment_onRef = putName("comment_on");
     325         341 :         compressRef = putName("compress");
     326         341 :         connectRef = putName("connect");
     327         341 :         containsRef = putName("contains");
     328         341 :         copy_fromRef = putName("copy_from");
     329         341 :         corrRef = putName("corr");
     330         341 :         count_no_nilRef = putName("count_no_nil");
     331         341 :         countRef = putName("count");
     332         341 :         create_functionRef = putName("create_function");
     333         341 :         create_roleRef = putName("create_role");
     334         341 :         create_schemaRef = putName("create_schema");
     335         341 :         create_seqRef = putName("create_seq");
     336         341 :         create_tableRef = putName("create_table");
     337         341 :         create_triggerRef = putName("create_trigger");
     338         341 :         create_typeRef = putName("create_type");
     339         341 :         create_userRef = putName("create_user");
     340         341 :         create_viewRef = putName("create_view");
     341         341 :         crossRef = putName("crossproduct");
     342         341 :         cume_distRef = putName("cume_dist");
     343         341 :         dataflowRef = putName("dataflow");
     344         341 :         dblRef = putName("dbl");
     345         341 :         decompressRef = putName("decompress");
     346         341 :         defineRef = putName("define");
     347         341 :         deleteRef = putName("delete");
     348         341 :         deltaRef = putName("delta");
     349         341 :         dense_rankRef = putName("dense_rank");
     350         341 :         dependRef = putName("depend");
     351         341 :         deregisterRef = putName("deregister");
     352         341 :         dictRef = putName("dict");
     353         341 :         diffcandRef = putName("diffcand");
     354         341 :         differenceRef = putName("difference");
     355         341 :         disconnectRef = putName("disconnect");
     356         341 :         divRef = putName("/");
     357         341 :         drop_constraintRef = putName("drop_constraint");
     358         341 :         drop_functionRef = putName("drop_function");
     359         341 :         drop_indexRef = putName("drop_index");
     360         341 :         drop_roleRef = putName("drop_role");
     361         341 :         drop_schemaRef = putName("drop_schema");
     362         341 :         drop_seqRef = putName("drop_seq");
     363         341 :         drop_tableRef = putName("drop_table");
     364         341 :         drop_triggerRef = putName("drop_trigger");
     365         341 :         drop_typeRef = putName("drop_type");
     366         341 :         drop_userRef = putName("drop_user");
     367         341 :         drop_viewRef = putName("drop_view");
     368         341 :         emptybindidxRef = putName("emptybindidx");
     369         341 :         emptybindRef = putName("emptybind");
     370         341 :         endswithjoinRef = putName("endswithjoin");
     371         341 :         eqRef = putName("==");
     372         341 :         evalRef = putName("eval");
     373         341 :         execRef = putName("exec");
     374         341 :         export_bin_columnRef = "export_bin_column";
     375         341 :         exportOperationRef = putName("exportOperation");
     376         341 :         export_tableRef = putName("export_table");
     377         341 :         fetchRef = putName("fetch");
     378         341 :         findRef = putName("find");
     379         341 :         firstnRef = putName("firstn");
     380         341 :         first_valueRef = putName("first_value");
     381         341 :         forRef = putName("for");
     382         341 :         generatorRef = putName("generator");
     383         341 :         getRef = putName("get");
     384         341 :         getTraceRef = putName("getTrace");
     385         341 :         getVariableRef = putName("getVariable");
     386         341 :         grant_functionRef = putName("grant_function");
     387         341 :         grantRef = putName("grant");
     388         341 :         grant_rolesRef = putName("grant_roles");
     389         341 :         groupbyRef = putName("groupby");
     390         341 :         groupdoneRef = putName("groupdone");
     391         341 :         groupRef = putName("group");
     392         341 :         growRef = putName("grow");
     393         341 :         hgeRef = putName("hge");
     394         341 :         identityRef = putName("identity");
     395         341 :         ifthenelseRef = putName("ifthenelse");
     396         341 :         importColumnRef = putName("importColumn");
     397         341 :         intersectcandRef = putName("intersectcand");
     398         341 :         intersectRef = putName("intersect");
     399         341 :         intRef = putName("int");
     400         341 :         ioRef = putName("io");
     401         341 :         iteratorRef = putName("iterator");
     402         341 :         joinRef = putName("join");
     403         341 :         jsonRef = putName("json");
     404         341 :         lagRef = putName("lag");
     405         341 :         languageRef = putName("language");
     406         341 :         last_valueRef = putName("last_value");
     407         341 :         leadRef = putName("lead");
     408         341 :         leftjoinRef = putName("leftjoin");
     409         341 :         likejoinRef = putName("likejoin");
     410         341 :         likeRef = putName("like");
     411         341 :         likeselectRef = putName("likeselect");
     412         341 :         lockRef = putName("lock");
     413         341 :         lookupRef = putName("lookup");
     414         341 :         malRef = putName("mal");
     415         341 :         manifoldRef = putName("manifold");
     416         341 :         mapiRef = putName("mapi");
     417         341 :         markjoinRef = putName("markjoin");
     418         341 :         markselectRef = putName("markselect");
     419         341 :         maskRef = putName("mask");
     420         341 :         matRef = putName("mat");
     421         341 :         maxlevenshteinRef = putName("maxlevenshtein");
     422         341 :         maxRef = putName("max");
     423         341 :         mdbRef = putName("mdb");
     424         341 :         mergecandRef = putName("mergecand");
     425         341 :         mergepackRef = putName("mergepack");
     426         341 :         mergetableRef = putName("mergetable");
     427         341 :         minjarowinklerRef = putName("minjarowinkler");
     428         341 :         minRef = putName("min");
     429         341 :         minusRef = putName("-");
     430         341 :         mirrorRef = putName("mirror");
     431         341 :         mitosisRef = putName("mitosis");
     432         341 :         mmathRef = putName("mmath");
     433         341 :         modRef = putName("%");
     434         341 :         mtimeRef = putName("mtime");
     435         341 :         mulRef = putName("*");
     436         341 :         multiplexRef = putName("multiplex");
     437         341 :         mvcRef = putName("mvc");
     438         341 :         newRef = putName("new");
     439         341 :         nextRef = putName("next");
     440         341 :         not_likeRef = putName("not_like");
     441         341 :         notRef = putName("not");
     442         341 :         not_uniqueRef = putName("not_unique");
     443         341 :         nth_valueRef = putName("nth_value");
     444         341 :         ntileRef = putName("ntile");
     445         341 :         outercrossRef = putName("outercrossproduct");
     446         341 :         outerjoinRef = putName("outerjoin");
     447         341 :         outerselectRef = putName("outerselect");
     448         341 :         packIncrementRef = putName("packIncrement");
     449         341 :         packRef = putName("pack");
     450         341 :         parametersRef = putName("parameters");
     451         341 :         passRef = putName("pass");
     452         341 :         percent_rankRef = putName("percent_rank");
     453         341 :         plusRef = putName("+");
     454         341 :         predicateRef = putName("predicate");
     455         341 :         printRef = putName("print");
     456         341 :         prodRef = putName("prod");
     457         341 :         profilerRef = putName("profiler");
     458         341 :         projectdeltaRef = putName("projectdelta");
     459         341 :         projectionpathRef = putName("projectionpath");
     460         341 :         projectionRef = putName("projection");
     461         341 :         projectRef = putName("project");
     462         341 :         putRef = putName("put");
     463         341 :         pyapi3Ref = putName("pyapi3");
     464         341 :         querylogRef = putName("querylog");
     465         341 :         raiseRef = putName("raise");
     466         341 :         rangejoinRef = putName("rangejoin");
     467         341 :         rankRef = putName("rank");
     468         341 :         rapiRef = putName("rapi");
     469         341 :         reconnectRef = putName("reconnect");
     470         341 :         registerRef = putName("register");
     471         341 :         register_supervisorRef = putName("register_supervisor");
     472         341 :         remapRef = putName("remap");
     473         341 :         remoteRef = putName("remote");
     474         341 :         rename_columnRef = putName("rename_column");
     475         341 :         rename_schemaRef = putName("rename_schema");
     476         341 :         rename_tableRef = putName("rename_table");
     477         341 :         rename_userRef = putName("rename_user");
     478         341 :         renumberRef = putName("renumber");
     479         341 :         replaceRef = putName("replace");
     480         341 :         resultSetRef = putName("resultSet");
     481         341 :         revoke_functionRef = putName("revoke_function");
     482         341 :         revokeRef = putName("revoke");
     483         341 :         revoke_rolesRef = putName("revoke_roles");
     484         341 :         row_numberRef = putName("row_number");
     485         341 :         rpcRef = putName("rpc");
     486         341 :         rsColumnRef = putName("rsColumn");
     487         341 :         rtreeRef = putName("rtree");
     488         341 :         sampleRef = putName("sample");
     489         341 :         selectNotNilRef = putName("selectNotNil");
     490         341 :         selectRef = putName("select");
     491         341 :         semaRef = putName("sema");
     492         341 :         semijoinRef = putName("semijoin");
     493         341 :         seriesRef = putName("series");
     494         341 :         setAccessRef = putName("setAccess");
     495         341 :         set_protocolRef = putName("set_protocol");
     496         341 :         setVariableRef = putName("setVariable");
     497         341 :         singleRef = putName("single");
     498         341 :         sliceRef = putName("slice");
     499         341 :         sortRef = putName("sort");
     500         341 :         sqlcatalogRef = putName("sqlcatalog");
     501         341 :         sqlRef = putName("sql");
     502         341 :         startswithjoinRef = putName("startswithjoin");
     503         341 :         stoptraceRef = putName("stoptrace");
     504         341 :         streamsRef = putName("streams");
     505         341 :         strimpsRef = putName("strimps");
     506         341 :         strRef = putName("str");
     507         341 :         subavgRef = putName("subavg");
     508         341 :         subcountRef = putName("subcount");
     509         341 :         subdeltaRef = putName("subdelta");
     510         341 :         subeval_aggrRef = putName("subeval_aggr");
     511         341 :         subgroupdoneRef = putName("subgroupdone");
     512         341 :         subgroupRef = putName("subgroup");
     513         341 :         submaxRef = putName("submax");
     514         341 :         subminRef = putName("submin");
     515         341 :         subprodRef = putName("subprod");
     516         341 :         subsliceRef = putName("subslice");
     517         341 :         subsumRef = putName("subsum");
     518         341 :         subuniformRef = putName("subuniform");
     519         341 :         sumRef = putName("sum");
     520         341 :         takeRef = putName("take");
     521         341 :         thetajoinRef = putName("thetajoin");
     522         341 :         thetaselectRef = putName("thetaselect");
     523         341 :         tidRef = putName("tid");
     524         341 :         transaction_abortRef = putName("transaction_abort");
     525         341 :         transaction_beginRef = putName("transaction_begin");
     526         341 :         transaction_commitRef = putName("transaction_commit");
     527         341 :         transactionRef = putName("transaction");
     528         341 :         transaction_releaseRef = putName("transaction_release");
     529         341 :         transaction_rollbackRef = putName("transaction_rollback");
     530         341 :         umaskRef = putName("umask");
     531         341 :         uniqueRef = putName("unique");
     532         341 :         unlockRef = putName("unlock");
     533         341 :         updateRef = putName("update");
     534         341 :         userRef = putName("user");
     535         341 :         window_boundRef = putName("window_bound");
     536         341 :         zero_or_oneRef = putName("zero_or_one");
     537             : /* ! please keep this list sorted for easier maintenance ! */
     538         341 : }

Generated by: LCOV version 1.14