IP Library › Granted Patent US 11,429,586
Granted Patent B2
US 11,429,586 · App. 15/389,362 · Granted Aug 30, 2022

Expression update validation

Inventors: Frank Wu (Palo Alto, CA); Tu Truong (San Jose, CA); Michael Kunzmann (Palo Alto, CA); Hameesh Manadath (Palo Alto, CA); Hansen Chen (Burnaby, CA); Makoto Sugishita (Osaka, JP); Masamitsu Ochiai (Sunnyvale, CA)
Assignee: SAP SE
G06F16/2365G06F16/2423G06F16/24564G06F40/205
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,429,586
App. No.
15/389,362
Filed
Dec 22, 2016
Granted
Aug 30, 2022
Kind
B2
Art Unit
2168
USPC
707/690
Abstract

Technologies are provided for validating expression updates. A change to an editable expression can be detected by a client computing device and an expression update describing the detected change can be transmitted to an application server over a bidirectional communication channel. The application server can analyze the expression update to determine whether the detected change resulted in a valid expression. Analyzing the expression update can comprise locating an entity identifier in the detected change and searching a database to determine whether the identified entity exists. The application server can also determine whether a given user has permission to access the identified entity. The application server can transmit expression update validation information back to the client computing device over the bidirectional communication channel. The client computing device can update a user interface displaying the expression based on the validation information.

Claims (80)

1. A method for validating a query expression update, the method comprising:

receiving the query expression update at a server computer from a client computing device over a bidirectional communication channel, wherein the bidirectional communication channel is associated with an expression validation session maintained on the server computer and wherein the query expression update describes a change to an existing query expression, wherein the query expression update comprises an updated portion of the query expression, and the query expression update comprises a position value indicating a position within the query expression where the change has been detected and the updated portion is located, wherein a representation of the existing query expression is maintained as part of the expression validation session on the server computer;

determining that the query expression update is syntactically valid;

determining that the query expression update contains an entity identifier;

determining whether an entity associated with the entity identifier is defined in a database;

if an entity associated with the entity identifier is defined in the database, transmitting a message to the client computing device from the server computer, over the bidirectional communication channel, indicating that the query expression update is valid; and

otherwise, transmitting a message to the client computing device from the server computer, over the bidirectional communication channel, indicating that the query expression update is invalid;

wherein the method further comprises:

receiving a request from the client computing device to establish the expression validation session;

creating the expression validation session;

creating an expression tree in the expression validation session; and

establishing the bidirectional communication channel with the client computing device.

2. The method of claim 1 , wherein:

the representation of the existing query expression comprises an expression tree; and

determining whether the query expression update is syntactically valid comprises:

updating the expression tree using the query expression update; and

analyzing the updated expression tree to determine whether the expression tree represents a valid expression.

3. The method of claim 2 , wherein:

updating the expression tree comprises adding one or more expression tree nodes to the expression tree; and

determining that the query expression update contains an entity identifier comprises determining that one of the added expression tree nodes contains the entity identifier.

4. The method of claim 1 , wherein determining that the query expression update contains an entity identifier comprises:

parsing the query expression update, using one or more operator identifiers as delimiters; and

determining that the parsed query expression update comprises an identifier that is not one of the one or more operator identifiers.

5. The method of claim 1 , wherein:

the query expression update is transmitted by the client computing device in response to detecting that a user has edited a query expression presented in a user interface component of the client computing device.

6. The method of claim 5 , further comprising:

updating the user interface component to indicate whether the query expression update is valid or invalid as the user continues to edit the query expression.

7. The method of claim 1 , wherein:

the expression validation session is associated with a user; and

the method further comprises:

if an entity associated with the entity identifier is defined in the database, determining whether the user has permission to access the entity, and

transmitting the message to the client computing device, over the bidirectional communication channel, indicating that the query expression update is invalid if the user does not have permission to access the entity.

8. The method of claim 1 , wherein:

determining that the query expression update is syntactically valid comprises:

updating the representation of the query expression to include the change to the query expression at the position indicated by the position value, and

determining that the updated query expression representation represents a syntactically valid query expression.

9. One or more computer-readable storage media storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations, the operations comprising:

receiving messages from a client computing device over a bidirectional communication channel associated with an expression validation session, wherein the messages comprise successive expression updates describing changes to an existing query expression, wherein the expression updates comprise updated portions of the existing query expression and positions within the existing query expression where the updated portions are located, and wherein the expression validation session is maintained on a server separate from the client computing device, wherein an expression tree representing the existing query expression is maintained as part of the expression validation session on the server;

validating the expression updates, wherein validating an expression update comprises:

modifying the expression tree based on the expression update,

detecting an entity identifier in the modified expression tree,

transmitting a request to a data store to verify an existence of an entity in the data store associated with the entity identifier, and

receiving a response from the data store indicating whether an entity associated with the entity identifier exists in the data store; and

transmitting expression validation responses to the client computing device via the bidirectional communication channel, wherein an expression validation response indicates whether a corresponding expression update includes an entity identifier associated with an entity in the data store.

10. The one or more computer-readable storage media of claim 9 , wherein:

the expression updates represent changes made to an expression via a user interface of the client computing device; and

the expression updates are asynchronously transmitted by the client computing device over the bidirectional communication channel as the changes are made to the expression.

11. The one or more computer-readable storage media of claim 9 , wherein:

the operations further comprise determining whether the modified expression tree represents a syntactically valid expression; and

the expression validation response indicates whether the corresponding expression update resulted in a syntactically valid expression.

12. The one or more computer-readable storage media of claim 9 , wherein the expression validation response comprises:

the entity identifier;

a validity indicator that indicates whether the entity associated with the entity identifier exists in the data store; and

a position indicator indicating a position in the query expression where the entity identifier is located.

13. The one or more computer-readable storage media of claim 12 , wherein:

the expression validation response further comprises a representation of the modified expression tree; and

the position indicator comprises a position in the modified expression tree where the entity identifier is located.

14. The one or more computer-readable storage media of claim 9 , wherein:

the data store comprises a relational database; and

the request transmitted to the data store to verify the existence of the entity comprises a query that determines whether a database table column associated with the entity identifier is defined in the relational database.

15. The one or more computer-readable storage media of claim 9 , wherein:

the response from the data store comprises identifiers for multiple entities defined in the data store that match the entity identifier; and

the expression validation response transmitted to the client computing device includes the identifiers for the multiple entities.

16. The one or more computer-readable storage media of claim 9 , wherein:

the query expression is a Structured Query Language (SQL) expression to be processed as part of a SQL statement by the data store.

17. The one or more computer-readable storage media of claim 9 , wherein the bidirectional communication channel is a WebSocket communication channel.

18. A system for validating expression updates, the system comprising:

a client computing device comprising a processor and a memory storing executable instructions that, when executed by the processor, cause the client computing device to perform operations, the operations comprising:

displaying a query expression in a user interface component,

detecting a modification of the query expression in the user interface component,

asynchronously transmitting a description of the modification of the query expression to an application server over a bidirectional communication channel, wherein the description of the modification comprises an updated portion of the query expression and a position within the query expression where the updated portion is located, wherein the bidirectional communication channel is associated with an expression validation session maintained on the application server,

receiving a response from the application server via the bidirectional communication channel indicating that the modification of the query expression is invalid,

updating the user interface component to display an indication that a modified portion of the query expression is invalid, and

preventing the query expression from being saved; and

the application server, wherein the application server comprises another processor, another memory storing other executable instructions that, when executed by the another processor, cause the application server to perform other operations, the other operations comprising:

receiving the description of the modification of the query expression, comprising the updated portion of the query expression and the position within the query expression where the updated portion is located, via the bidirectional communication channel,

updating an expression tree that is part of the expression validation session that is maintained on the application server and that is associated with the bidirectional communication channel, wherein the expression tree is updated based on the description of the modification of the query expression,

detecting an entity identifier in an updated portion of the expression tree,

determining that the entity identifier is not associated with a data entity in a database connected to the application server, and

transmitting the response to the client computing device via the bidirectional communication channel, indicating that the modification of the query expression is invalid.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2017
From: KUNZMANN, MICHAEL; WU, FRANK; TRUONG, TU; MANADATH, HAMEESH; CHEN, HANSEN; SUGISHITA, MAKOTO; OCHIAI, MASAMITSU
To: SAP SE
Reel/Frame 041249/0940 →
Continuity (1)
Related Publication 20180181608A1 · Jun 28, 2018