GithubHelp home page GithubHelp logo

lsfusion / platform Goto Github PK

View Code? Open in Web Editor NEW
147.0 147.0 28.0 113.21 MB

lsFusion is an extremely declarative open-source language-based platform for information systems development

Home Page: https://lsfusion.org

License: GNU Lesser General Public License v3.0

Java 65.93% Batchfile 0.01% GAP 1.14% CSS 0.85% JavaScript 31.31% PLpgSQL 0.09% CoffeeScript 0.65% Dockerfile 0.01% Shell 0.01% HTML 0.01%
database-servers enterprise enterprise-software erp-framework framework full-stack low-code low-code-development low-code-development-platform low-code-framework low-code-platform platform rad sql web-framework

platform's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

platform's Issues

Support of NULL arguments for properties and actions on form.

Now property is automatically hidden when one of its arguments is NULL. It is not very convenient in some cases (for example adding object, selecting objects when there is no table, etc). Generally it's not possible to find out that out of context, so this option should be set explicitly (however maybe some heuristics may be applied first)

Probably this issue is related to #12 task.

Change LOG-properties canonical name creation

At the moment, LOG-property signature is created using original property's interface classes, not using the signature of the original property. Potentially this can lead to an appearance of non-unique canonical names and, more importantly, this prevents simple migration of the LOG-properties. If we use the signature of the original property, we will move migration of LOG-properties from addLogPropertiesToMigration to setUserLoggableProperties and will add LOG-properties canonical name changes directly to storedPropertyCNChanges right there.

Read statistics directly from SQL server

Now this statistics is recalculated, on one hand, that makes updating statistics platform-independent, but on another hand it may be really time-consuming. So it's better to read statistics from server (this also will make both statistics relevant to each other), but so far it is not so clear what to do with quantile statistics (top 80% distinct values).

Make GROUP LAST / CONCAT deterministic by default

Either throw an error if not all parameters in ORDER clause, or automatically add them to the end of that clause. It might give a little overhead, but mistakes are really too often, when using this operator.

NULL values statistics support in tables

Now only NOT NULL statistics is supported, so if there are no null values in field f, then statistics for IN JOIN A AND A.f IS NULL will not be correct, and ANTI JOIN optimization will not work.

Implement search in UI

Now only filter is supported, and sometimes it is more convenient to find first object instead of all objects.
All necessary infrastructure (for example like SEEK operator) is already implemented.

Especially this feature is important for trees, where it should be implemented differently (with recursion, and that is why filter can not be used for searching)

Support retryable requests in navigator

Now there is no requestIndex support in navigator remote calls, so retryable requests are supported only in forms (what is a lot more important, but still)

Respect context when updating PREVs during single apply in global events execution

Now when changes are immediately applied in database ("single applied"), all PREV values used in global events are also materialized in some temporary tables (this values will be needed when executing corresponding events). It is done for all values, even ones that will not be used later. For example if we have CONSTRAINT CHANGED(f(a)) AND g(a), it is wise to calculate PREV(f(a)) only for g(a) values. It is pretty tricky, but, it seems, not very hard to implement, at least in most evident cases.

Add introducing parameters to all operators that has results

For operators READ, EXPORT, EXTERNAL and PRINT (all that have TO clause). Do it similarly to input and import operators.

Also it can be done for EXEC operator, but it will be a little more tricky.

Plus, IMPORT operator does not support working with results as parameters, when fields identification in import is done via their order (and not names).

Support NULL arguments for properties

Now DATA, GROUP and some other operators don't allow having NULL values in their parameters.

It might be really dangerous having NULL arguments in a property, because it will immediately lead to incorrect operations with sets. For example, if we have a = DATA INTEGER (A NULL), and wanna do iteration (for example FOR) over all a(b(param) objects, we will get an exception, because property will be not null for infinite number of objects. But in certain cases it is really convenient so should be implemented.

Also NULL support may be provided for comparison operators (=, >, <, ...etc,)

Probably this issue is related to #11 task.

Inline group change action

Now group change works like not inlined FOR, what is really inefficient when there are really a lot of objects in grid. So, group change (GroupChangeActionProperty) should be implemented using FOR operator, then it will be automatically inlined during basic compilation process.

Add debug info for inlined actions

If we have action like FOR f(a) DO g(a) <- h(a); and there is no dependency between f and g, this action will be compiled to f(a) <- h(a) WHERE f(a); but there will be no debug info for this "new action", what is very inconvinient for debug / support.

Events / actions disabling in run-time

Needed for support purposes. The problem is how to identify anonymous events / actions. It seems, that the only option is using debugInfo - for example ModuleX(144:33);

Remove = from anonymous property expression rule in FORM operator

The problem is that the grammar will stop being LL* in that case (however it is already non-LL* but in only couple of very simple rules). So apparently some pretty complex lookahead is needed (as far as i remember the problem is that after property draw options block there comes a property expression without any prefix)

Fix potential nonuniqueness of property (actions) canonical names

The issue is that different parts of these names are combined using the underscore _ (and special symbols in property (action) canonical names are replaced with the underscore as well) that can be a part of some name. This could lead to the situation when two names formed by different parts could be identical.

  • VALUE properties (_OBJVALUE). Name contains form canonical name + object name
  • NEWEDIT/NEW/EDIT actions (_ADDFORM/_EDITFORM). Name contains class name + form canonical name
  • SECURITY properties (_POLICY). Name contains property (action) canonical name

Methods:

  • VALUE: BaseLogicsModule.getObjValueProp
  • NEWEDIT/NEW/EDIT: BaseLogicsModule.getAddFormAction, BaseLogicsModule.getEditFormAction
  • SECURITY: BusinesLogics.setupPropertyPolicyForms

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.