github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/appdefcompat/sql/sys.new.vsql (about)

     1  -- noinspection SqlNoDataSourceInspectionForFile
     2  
     3  -- Copyright (c) 2020-present unTill Pro, Ltd.
     4  
     5  -- note: this schema is for tests only. Voedger sys package uses copy of this schema
     6  IMPORT SCHEMA 'pkg1' AS pkg2;
     7  IMPORT SCHEMA 'pkg2' AS pkg1;
     8  
     9  APPLICATION TEST(
    10  	USE pkg1;
    11  	USE pkg2;
    12  );
    13  
    14  ABSTRACT TABLE CRecord();
    15  ABSTRACT TABLE WRecord();
    16  ABSTRACT TABLE ORecord();
    17  
    18  ABSTRACT TABLE CDoc INHERITS CRecord();
    19  ABSTRACT TABLE ODoc INHERITS ORecord();
    20  ABSTRACT TABLE WDoc INHERITS WRecord();
    21  
    22  ABSTRACT TABLE Singleton INHERITS CDoc();
    23  
    24  WORKSPACE Workspace ( -- ValueChanged: Abstract flag must not be changed
    25  );
    26  
    27  WORKSPACE SomeWorkspace(
    28      USE TABLE pkg1.*;
    29      USE TABLE pkg2.*;
    30      TYPE CreateLoginUnloggedParams(
    31          Password varchar, -- OrderChanged
    32          Email varchar --OrderChanged
    33      );
    34      TYPE CreateLoginParams(
    35          --Login                     varchar, -- NodeRemoved
    36          AppName                     varchar,
    37          SubjectKind                 int32,
    38          WSKindInitializationData    varchar(1024),
    39          ProfileCluster              int64, -- ValueChanged: int32 in old version, int64 in new version
    40          ProfileToken                int64, -- ValueChanged: int32 in old version, int64 in new version
    41          myfield1 ref(pkg1.MyTable1),
    42          myfield2 ref(pkg2.MyTable1),
    43          NewField                    varchar -- appending field is allowed
    44      );
    45      TABLE OneMoreTable INHERITS CDoc(
    46          A varchar,
    47          B varchar,
    48          C int32,
    49          UNIQUE (A, B) -- allowed to reorder fields in unique constraint
    50      );
    51      TABLE AnotherOneTable INHERITS CDoc(
    52          A varchar,
    53          B varchar,
    54          D varchar, -- NodeInserted
    55          C int32, -- OrderChanged, ValueChanged: varchar in old version, int32 in new version, field's index is changed
    56          UNIQUE (A, B, D) -- NodeModified: added field D to UniqueFields
    57      );
    58      TYPE SomeType(
    59          A varchar,
    60          B int
    61      );
    62      TYPE SomeType2(
    63          A varchar,
    64          B int,
    65          C int,
    66          D int
    67      );
    68      VIEW SomeView(
    69          A int,
    70          B varchar, -- ValueChanged: field B was changed as a part of ClustColsFields
    71          C int, -- actual error raises in primary key
    72          D int, -- order of this field is not changed because it is value field
    73          E varchar, -- ValueChanged: field E was changed as a part of value fields
    74          F int, -- appending field is allowed to value fields
    75          PRIMARY KEY ((A, C), B) -- NodeModified: added field C to PartKeyFields
    76      ) AS RESULT OF Proj1;
    77      TABLE NewTable INHERITS CDoc(
    78          A varchar
    79      );
    80      TYPE NewType( -- new type is allowed
    81          A varchar
    82      );
    83      TYPE NewType2( -- new type is allowed
    84          A varchar,
    85          B int32
    86      );
    87      VIEW NewView( -- new view is allowed
    88          A int,
    89          B int,
    90          PRIMARY KEY ((A), B)
    91      ) AS RESULT OF Proj1;
    92      TABLE O_Doc INHERITS ODoc (
    93          Fld1 int32,
    94          Fld2 int64 -- field added, the doc is an arg of c.sys.CmdODoc -> no problem becuase the field is not required
    95      );
    96      EXTENSION ENGINE BUILTIN (
    97          PROJECTOR Proj1 AFTER EXECUTE ON (Orders) INTENTS (View(SomeView), View(NewView));
    98          COMMAND Orders();
    99          COMMAND CreateLogin(CreateLoginParams, UNLOGGED CreateLoginUnloggedParams) RETURNS void;
   100          COMMAND SomeCommand(SomeType2, UNLOGGED SomeType2) RETURNS SomeType2; -- args, unloggedArgs and result are changed -> deny, clietn will fail to call the cmd he just called
   101          COMMAND NewCommand(NewType, UNLOGGED NewType2) RETURNS NewType;
   102          QUERY NewQuery(NewType) RETURNS NewType; -- new query is allowed
   103          QUERY SomeQuery(SomeType2) RETURNS SomeType2; -- changing args and return type is allowed
   104          COMMAND CmdODoc(O_Doc);
   105      )
   106  );
   107  
   108  ALTERABLE WORKSPACE Profile(
   109  
   110  );
   111  
   112  EXTENSION ENGINE BUILTIN (
   113  
   114      STORAGE Record(
   115          GET         SCOPE(COMMANDS, QUERIES, PROJECTORS),
   116          GETBATCH    SCOPE(COMMANDS, QUERIES, PROJECTORS),
   117          INSERT      SCOPE(COMMANDS),
   118          UPDATE      SCOPE(COMMANDS)
   119      ) ENTITY RECORD; -- used to validate projector state/intents declaration
   120  
   121  
   122      STORAGE View(
   123          GET         SCOPE(COMMANDS, QUERIES, PROJECTORS),
   124          GETBATCH    SCOPE(COMMANDS, QUERIES, PROJECTORS),
   125          READ        SCOPE(QUERIES, PROJECTORS),
   126          INSERT      SCOPE(PROJECTORS),
   127          UPDATE      SCOPE(PROJECTORS)
   128      ) ENTITY VIEW;
   129  
   130      STORAGE WLog(
   131          GET     SCOPE(COMMANDS, QUERIES, PROJECTORS),
   132          READ    SCOPE(QUERIES, PROJECTORS)
   133      );
   134  
   135      STORAGE PLog(
   136          GET     SCOPE(COMMANDS, QUERIES, PROJECTORS),
   137          READ    SCOPE(QUERIES, PROJECTORS)
   138      );
   139  
   140      STORAGE AppSecret(
   141          GET SCOPE(COMMANDS, QUERIES, PROJECTORS)
   142      );
   143  
   144      STORAGE Subject(
   145          GET SCOPE(COMMANDS, QUERIES)
   146      );
   147  
   148      STORAGE Http (
   149          READ SCOPE(QUERIES, PROJECTORS)
   150      );
   151  
   152      STORAGE SendMail(
   153          INSERT SCOPE(PROJECTORS)
   154      );
   155  
   156      STORAGE CmdResult(
   157          INSERT SCOPE(COMMANDS)
   158      );
   159  
   160  )