LCOV - code coverage report
Current view: top level - monetdb5/optimizer - opt_prelude.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 258 258 100.0 %
Date: 2024-11-11 20:03:36 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 *lngRef;
     153             : const char *lockRef;
     154             : const char *lookupRef;
     155             : const char *malRef;
     156             : const char *manifoldRef;
     157             : const char *mapiRef;
     158             : const char *markjoinRef;
     159             : const char *markselectRef;
     160             : const char *maskRef;
     161             : const char *matRef;
     162             : const char *maxlevenshteinRef;
     163             : const char *maxRef;
     164             : const char *mdbRef;
     165             : const char *mergecandRef;
     166             : const char *mergepackRef;
     167             : const char *mergetableRef;
     168             : const char *minjarowinklerRef;
     169             : const char *minRef;
     170             : const char *minusRef;
     171             : const char *mirrorRef;
     172             : const char *mitosisRef;
     173             : const char *mmathRef;
     174             : const char *modRef;
     175             : const char *mtimeRef;
     176             : const char *mulRef;
     177             : const char *multiplexRef;
     178             : const char *mvcRef;
     179             : const char *newRef;
     180             : const char *nextRef;
     181             : const char *not_likeRef;
     182             : const char *notRef;
     183             : const char *not_uniqueRef;
     184             : const char *nth_valueRef;
     185             : const char *ntileRef;
     186             : const char *outercrossRef;
     187             : const char *outerjoinRef;
     188             : const char *outerselectRef;
     189             : const char *packIncrementRef;
     190             : const char *packRef;
     191             : const char *parametersRef;
     192             : const char *passRef;
     193             : const char *percent_rankRef;
     194             : const char *plusRef;
     195             : const char *predicateRef;
     196             : const char *printRef;
     197             : const char *prodRef;
     198             : const char *profilerRef;
     199             : const char *projectdeltaRef;
     200             : const char *projectionpathRef;
     201             : const char *projectionRef;
     202             : const char *projectRef;
     203             : const char *putRef;
     204             : const char *pyapi3Ref;
     205             : const char *querylogRef;
     206             : const char *raiseRef;
     207             : const char *rangejoinRef;
     208             : const char *rankRef;
     209             : const char *rapiRef;
     210             : const char *reconnectRef;
     211             : const char *registerRef;
     212             : const char *register_supervisorRef;
     213             : const char *remapRef;
     214             : const char *remoteRef;
     215             : const char *rename_columnRef;
     216             : const char *rename_schemaRef;
     217             : const char *rename_tableRef;
     218             : const char *rename_userRef;
     219             : const char *renumberRef;
     220             : const char *replaceRef;
     221             : const char *resultSetRef;
     222             : const char *revoke_functionRef;
     223             : const char *revokeRef;
     224             : const char *revoke_rolesRef;
     225             : const char *row_numberRef;
     226             : const char *rpcRef;
     227             : const char *rsColumnRef;
     228             : const char *rtreeRef;
     229             : const char *sampleRef;
     230             : const char *selectNotNilRef;
     231             : const char *selectRef;
     232             : const char *semaRef;
     233             : const char *semijoinRef;
     234             : const char *seriesRef;
     235             : const char *setAccessRef;
     236             : const char *set_protocolRef;
     237             : const char *setVariableRef;
     238             : const char *singleRef;
     239             : const char *sliceRef;
     240             : const char *sortRef;
     241             : const char *sqlcatalogRef;
     242             : const char *sqlRef;
     243             : const char *startswithjoinRef;
     244             : const char *stoptraceRef;
     245             : const char *streamsRef;
     246             : const char *strimpsRef;
     247             : const char *strRef;
     248             : const char *subavgRef;
     249             : const char *subcountRef;
     250             : const char *subdeltaRef;
     251             : const char *subeval_aggrRef;
     252             : const char *subgroupdoneRef;
     253             : const char *subgroupRef;
     254             : const char *submaxRef;
     255             : const char *subminRef;
     256             : const char *subprodRef;
     257             : const char *subsliceRef;
     258             : const char *subsumRef;
     259             : const char *subuniformRef;
     260             : const char *sumRef;
     261             : const char *takeRef;
     262             : const char *thetajoinRef;
     263             : const char *thetaselectRef;
     264             : const char *tidRef;
     265             : const char *transaction_abortRef;
     266             : const char *transaction_beginRef;
     267             : const char *transaction_commitRef;
     268             : const char *transactionRef;
     269             : const char *transaction_releaseRef;
     270             : const char *transaction_rollbackRef;
     271             : const char *umaskRef;
     272             : const char *unionfuncRef;
     273             : const char *uniqueRef;
     274             : const char *unlockRef;
     275             : const char *updateRef;
     276             : const char *userRef;
     277             : const char *window_boundRef;
     278             : const char *zero_or_oneRef;
     279             : /* ! please keep this list sorted for easier maintenance ! */
     280             : 
     281             : void
     282         331 : optimizerInit(void)
     283             : {
     284             : /* ! please keep this list sorted for easier maintenance ! */
     285         331 :         affectedRowsRef = putName("affectedRows");
     286         331 :         aggrRef = putName("aggr");
     287         331 :         alarmRef = putName("alarm");
     288         331 :         algebraRef = putName("algebra");
     289         331 :         alter_add_range_partitionRef = putName("alter_add_range_partition");
     290         331 :         alter_add_tableRef = putName("alter_add_table");
     291         331 :         alter_add_value_partitionRef = putName("alter_add_value_partition");
     292         331 :         alter_del_tableRef = putName("alter_del_table");
     293         331 :         alter_seqRef = putName("alter_seq");
     294         331 :         alter_set_tableRef = putName("alter_set_table");
     295         331 :         alter_tableRef = putName("alter_table");
     296         331 :         alter_userRef = putName("alter_user");
     297         331 :         appendBulkRef = putName("appendBulk");
     298         331 :         appendRef = putName("append");
     299         331 :         assertRef = putName("assert");
     300         331 :         avgRef = putName("avg");
     301         331 :         bandjoinRef = putName("bandjoin");
     302         331 :         batalgebraRef = putName("batalgebra");
     303         331 :         batcalcRef = putName("batcalc");
     304         331 :         batcapiRef = putName("batcapi");
     305         331 :         batmalRef = putName("batmal");
     306         331 :         batmkeyRef = putName("batmkey");
     307         331 :         batmmathRef = putName("batmmath");
     308         331 :         batmtimeRef = putName("batmtime");
     309         331 :         batpyapi3Ref = putName("batpyapi3");
     310         331 :         batrapiRef = putName("batrapi");
     311         331 :         batRef = putName("bat");
     312         331 :         batsqlRef = putName("batsql");
     313         331 :         batstrRef = putName("batstr");
     314         331 :         bbpRef = putName("bbp");
     315         331 :         betweenRef = putName("between");
     316         331 :         binddbatRef = putName("bind_dbat");
     317         331 :         bindidxRef = putName("bind_idxbat");
     318         331 :         bindRef = putName("bind");
     319         331 :         blockRef = putName("block");
     320         331 :         bstreamRef = putName("bstream");
     321         331 :         calcRef = putName("calc");
     322         331 :         capiRef = putName("capi");
     323         331 :         claimRef = putName("claim");
     324         331 :         clear_tableRef = putName("clear_table");
     325         331 :         columnBindRef = putName("columnBind");
     326         331 :         comment_onRef = putName("comment_on");
     327         331 :         compressRef = putName("compress");
     328         331 :         connectRef = putName("connect");
     329         331 :         containsRef = putName("contains");
     330         331 :         copy_fromRef = putName("copy_from");
     331         331 :         corrRef = putName("corr");
     332         331 :         count_no_nilRef = putName("count_no_nil");
     333         331 :         countRef = putName("count");
     334         331 :         create_functionRef = putName("create_function");
     335         331 :         create_roleRef = putName("create_role");
     336         331 :         create_schemaRef = putName("create_schema");
     337         331 :         create_seqRef = putName("create_seq");
     338         331 :         create_tableRef = putName("create_table");
     339         331 :         create_triggerRef = putName("create_trigger");
     340         331 :         create_typeRef = putName("create_type");
     341         331 :         create_userRef = putName("create_user");
     342         331 :         create_viewRef = putName("create_view");
     343         331 :         crossRef = putName("crossproduct");
     344         331 :         cume_distRef = putName("cume_dist");
     345         331 :         dataflowRef = putName("dataflow");
     346         331 :         dblRef = putName("dbl");
     347         331 :         decompressRef = putName("decompress");
     348         331 :         defineRef = putName("define");
     349         331 :         deleteRef = putName("delete");
     350         331 :         deltaRef = putName("delta");
     351         331 :         dense_rankRef = putName("dense_rank");
     352         331 :         dependRef = putName("depend");
     353         331 :         deregisterRef = putName("deregister");
     354         331 :         dictRef = putName("dict");
     355         331 :         diffcandRef = putName("diffcand");
     356         331 :         differenceRef = putName("difference");
     357         331 :         disconnectRef = putName("disconnect");
     358         331 :         divRef = putName("/");
     359         331 :         drop_constraintRef = putName("drop_constraint");
     360         331 :         drop_functionRef = putName("drop_function");
     361         331 :         drop_indexRef = putName("drop_index");
     362         331 :         drop_roleRef = putName("drop_role");
     363         331 :         drop_schemaRef = putName("drop_schema");
     364         331 :         drop_seqRef = putName("drop_seq");
     365         331 :         drop_tableRef = putName("drop_table");
     366         331 :         drop_triggerRef = putName("drop_trigger");
     367         331 :         drop_typeRef = putName("drop_type");
     368         331 :         drop_userRef = putName("drop_user");
     369         331 :         drop_viewRef = putName("drop_view");
     370         331 :         emptybindidxRef = putName("emptybindidx");
     371         331 :         emptybindRef = putName("emptybind");
     372         331 :         endswithjoinRef = putName("endswithjoin");
     373         331 :         eqRef = putName("==");
     374         331 :         evalRef = putName("eval");
     375         331 :         execRef = putName("exec");
     376         331 :         export_bin_columnRef = "export_bin_column";
     377         331 :         exportOperationRef = putName("exportOperation");
     378         331 :         export_tableRef = putName("export_table");
     379         331 :         fetchRef = putName("fetch");
     380         331 :         findRef = putName("find");
     381         331 :         firstnRef = putName("firstn");
     382         331 :         first_valueRef = putName("first_value");
     383         331 :         forRef = putName("for");
     384         331 :         generatorRef = putName("generator");
     385         331 :         getRef = putName("get");
     386         331 :         getTraceRef = putName("getTrace");
     387         331 :         getVariableRef = putName("getVariable");
     388         331 :         grant_functionRef = putName("grant_function");
     389         331 :         grantRef = putName("grant");
     390         331 :         grant_rolesRef = putName("grant_roles");
     391         331 :         groupbyRef = putName("groupby");
     392         331 :         groupdoneRef = putName("groupdone");
     393         331 :         groupRef = putName("group");
     394         331 :         growRef = putName("grow");
     395         331 :         hgeRef = putName("hge");
     396         331 :         identityRef = putName("identity");
     397         331 :         ifthenelseRef = putName("ifthenelse");
     398         331 :         importColumnRef = putName("importColumn");
     399         331 :         intersectcandRef = putName("intersectcand");
     400         331 :         intersectRef = putName("intersect");
     401         331 :         intRef = putName("int");
     402         331 :         ioRef = putName("io");
     403         331 :         iteratorRef = putName("iterator");
     404         331 :         joinRef = putName("join");
     405         331 :         jsonRef = putName("json");
     406         331 :         lagRef = putName("lag");
     407         331 :         languageRef = putName("language");
     408         331 :         last_valueRef = putName("last_value");
     409         331 :         leadRef = putName("lead");
     410         331 :         leftjoinRef = putName("leftjoin");
     411         331 :         likejoinRef = putName("likejoin");
     412         331 :         likeRef = putName("like");
     413         331 :         likeselectRef = putName("likeselect");
     414         331 :         lngRef = putName("lng");
     415         331 :         lockRef = putName("lock");
     416         331 :         lookupRef = putName("lookup");
     417         331 :         malRef = putName("mal");
     418         331 :         manifoldRef = putName("manifold");
     419         331 :         mapiRef = putName("mapi");
     420         331 :         markjoinRef = putName("markjoin");
     421         331 :         markselectRef = putName("markselect");
     422         331 :         maskRef = putName("mask");
     423         331 :         matRef = putName("mat");
     424         331 :         maxlevenshteinRef = putName("maxlevenshtein");
     425         331 :         maxRef = putName("max");
     426         331 :         mdbRef = putName("mdb");
     427         331 :         mergecandRef = putName("mergecand");
     428         331 :         mergepackRef = putName("mergepack");
     429         331 :         mergetableRef = putName("mergetable");
     430         331 :         minjarowinklerRef = putName("minjarowinkler");
     431         331 :         minRef = putName("min");
     432         331 :         minusRef = putName("-");
     433         331 :         mirrorRef = putName("mirror");
     434         331 :         mitosisRef = putName("mitosis");
     435         331 :         mmathRef = putName("mmath");
     436         331 :         modRef = putName("%");
     437         331 :         mtimeRef = putName("mtime");
     438         331 :         mulRef = putName("*");
     439         331 :         multiplexRef = putName("multiplex");
     440         331 :         mvcRef = putName("mvc");
     441         331 :         newRef = putName("new");
     442         331 :         nextRef = putName("next");
     443         331 :         not_likeRef = putName("not_like");
     444         331 :         notRef = putName("not");
     445         331 :         not_uniqueRef = putName("not_unique");
     446         331 :         nth_valueRef = putName("nth_value");
     447         331 :         ntileRef = putName("ntile");
     448         331 :         outercrossRef = putName("outercrossproduct");
     449         331 :         outerjoinRef = putName("outerjoin");
     450         331 :         outerselectRef = putName("outerselect");
     451         331 :         packIncrementRef = putName("packIncrement");
     452         331 :         packRef = putName("pack");
     453         331 :         parametersRef = putName("parameters");
     454         331 :         passRef = putName("pass");
     455         331 :         percent_rankRef = putName("percent_rank");
     456         331 :         plusRef = putName("+");
     457         331 :         predicateRef = putName("predicate");
     458         331 :         printRef = putName("print");
     459         331 :         prodRef = putName("prod");
     460         331 :         profilerRef = putName("profiler");
     461         331 :         projectdeltaRef = putName("projectdelta");
     462         331 :         projectionpathRef = putName("projectionpath");
     463         331 :         projectionRef = putName("projection");
     464         331 :         projectRef = putName("project");
     465         331 :         putRef = putName("put");
     466         331 :         pyapi3Ref = putName("pyapi3");
     467         331 :         querylogRef = putName("querylog");
     468         331 :         raiseRef = putName("raise");
     469         331 :         rangejoinRef = putName("rangejoin");
     470         331 :         rankRef = putName("rank");
     471         331 :         rapiRef = putName("rapi");
     472         331 :         reconnectRef = putName("reconnect");
     473         331 :         registerRef = putName("register");
     474         331 :         register_supervisorRef = putName("register_supervisor");
     475         331 :         remapRef = putName("remap");
     476         331 :         remoteRef = putName("remote");
     477         331 :         rename_columnRef = putName("rename_column");
     478         331 :         rename_schemaRef = putName("rename_schema");
     479         331 :         rename_tableRef = putName("rename_table");
     480         331 :         rename_userRef = putName("rename_user");
     481         331 :         renumberRef = putName("renumber");
     482         331 :         replaceRef = putName("replace");
     483         331 :         resultSetRef = putName("resultSet");
     484         331 :         revoke_functionRef = putName("revoke_function");
     485         331 :         revokeRef = putName("revoke");
     486         331 :         revoke_rolesRef = putName("revoke_roles");
     487         331 :         row_numberRef = putName("row_number");
     488         331 :         rpcRef = putName("rpc");
     489         331 :         rsColumnRef = putName("rsColumn");
     490         331 :         rtreeRef = putName("rtree");
     491         331 :         sampleRef = putName("sample");
     492         331 :         selectNotNilRef = putName("selectNotNil");
     493         331 :         selectRef = putName("select");
     494         331 :         semaRef = putName("sema");
     495         331 :         semijoinRef = putName("semijoin");
     496         331 :         seriesRef = putName("series");
     497         331 :         setAccessRef = putName("setAccess");
     498         331 :         set_protocolRef = putName("set_protocol");
     499         331 :         setVariableRef = putName("setVariable");
     500         331 :         singleRef = putName("single");
     501         331 :         sliceRef = putName("slice");
     502         331 :         sortRef = putName("sort");
     503         331 :         sqlcatalogRef = putName("sqlcatalog");
     504         331 :         sqlRef = putName("sql");
     505         331 :         startswithjoinRef = putName("startswithjoin");
     506         331 :         stoptraceRef = putName("stoptrace");
     507         331 :         streamsRef = putName("streams");
     508         331 :         strimpsRef = putName("strimps");
     509         331 :         strRef = putName("str");
     510         331 :         subavgRef = putName("subavg");
     511         331 :         subcountRef = putName("subcount");
     512         331 :         subdeltaRef = putName("subdelta");
     513         331 :         subeval_aggrRef = putName("subeval_aggr");
     514         331 :         subgroupdoneRef = putName("subgroupdone");
     515         331 :         subgroupRef = putName("subgroup");
     516         331 :         submaxRef = putName("submax");
     517         331 :         subminRef = putName("submin");
     518         331 :         subprodRef = putName("subprod");
     519         331 :         subsliceRef = putName("subslice");
     520         331 :         subsumRef = putName("subsum");
     521         331 :         subuniformRef = putName("subuniform");
     522         331 :         sumRef = putName("sum");
     523         331 :         takeRef = putName("take");
     524         331 :         thetajoinRef = putName("thetajoin");
     525         331 :         thetaselectRef = putName("thetaselect");
     526         331 :         tidRef = putName("tid");
     527         331 :         transaction_abortRef = putName("transaction_abort");
     528         331 :         transaction_beginRef = putName("transaction_begin");
     529         331 :         transaction_commitRef = putName("transaction_commit");
     530         331 :         transactionRef = putName("transaction");
     531         331 :         transaction_releaseRef = putName("transaction_release");
     532         331 :         transaction_rollbackRef = putName("transaction_rollback");
     533         331 :         umaskRef = putName("umask");
     534         331 :         unionfuncRef = putName("unionfunc");
     535         331 :         uniqueRef = putName("unique");
     536         331 :         unlockRef = putName("unlock");
     537         331 :         updateRef = putName("update");
     538         331 :         userRef = putName("user");
     539         331 :         window_boundRef = putName("window_bound");
     540         331 :         zero_or_oneRef = putName("zero_or_one");
     541             : /* ! please keep this list sorted for easier maintenance ! */
     542         331 : }

Generated by: LCOV version 1.14