CN110555030A - SQL statement processing method and device - Google Patents

SQL statement processing method and device Download PDF

Info

Publication number
CN110555030A
CN110555030A CN201810264130.4A CN201810264130A CN110555030A CN 110555030 A CN110555030 A CN 110555030A CN 201810264130 A CN201810264130 A CN 201810264130A CN 110555030 A CN110555030 A CN 110555030A
Authority
CN
China
Prior art keywords
tenant
new
sql
sql statement
statement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810264130.4A
Other languages
Chinese (zh)
Inventor
徐开廷
林世洪
孙海波
刘文杰
赵光伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201810264130.4A priority Critical patent/CN110555030A/en
Publication of CN110555030A publication Critical patent/CN110555030A/en
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

The invention discloses a method and a device for processing SQL sentences, and relates to the technical field of computers. One embodiment of the method comprises: intercepting all SQL statements in an application program, and analyzing the SQL statements to acquire the operation types of the SQL statements; adding a conditional statement of a tenant identifier in the SQL statement according to the operation type to generate a new SQL statement; and acquiring the value of the tenant identification and the parameter value of the SQL statement, and transmitting the value of the tenant identification and the parameter value into a new SQL statement. According to the implementation method, all SQL sentences in the application program are intercepted, and the condition sentences marked by the tenants are added according to the operation types of the SQL sentences, so that the required parameters of the new SQL sentences are replaced after the new SQL sentences are obtained. On the premise of not changing SQL (structured query language) statements of the application program, the conditional statements and parameters of tenant identification are automatically added, and the existing application program is upgraded into an SAAS application program on a database level.

Description

SQL statement processing method and device
Technical Field
The invention relates to the field of computers, in particular to a method and a device for processing SQL sentences.
Background
SAAS (Software-as-a-Service) is a mode for providing Software services based on the Internet, a manufacturer uniformly deploys application Software on a server of the manufacturer, a client can order required application Software services from the manufacturer through the Internet according to actual needs of the client, pay fees to the manufacturer according to the amount and time of the ordered services, and obtain the services provided by the manufacturer through the Internet. The SAAS application is developed and deployed online in a multi-tenant manner, and a conventional software developer wants to have a manner of converting a non-SAAS application into an SAAS application.
Because the SAAS application program adopts a multi-tenant mode, in order to implement service isolation, a tenant identification field needs to be newly added in each database table. An application program in the conventional software industry contains a large number of Structured Query Language (SQL) statements which are added, deleted, and checked, and when the application program in the conventional software industry is converted into an SAAS application program, a developer needs to manually add a conditional statement of a tenant identifier in all SQL statements.
In the process of implementing the invention, the inventor finds that at least the following problems exist in the prior art:
(1) The change of a large number of SQL sentences is involved, and the labor cost and the test cost are huge;
(2) the manual modification hardly ensures that all SQL sentences are added with the conditional sentences marked by the tenants, once the conditional sentences are missing, the data range of business operations such as query, modification, deletion and the like is expanded by mistake after an application program is online, and the safety of the data cannot be ensured;
(3) because all SQL statements are modified manually, in the life cycle of the application program, if the test range of the application program is insufficient, the correctness of functions and the safety of data cannot be guaranteed after the application program is online.
Disclosure of Invention
in view of this, embodiments of the present invention provide a method and an apparatus for processing an SQL statement, where all SQL statements in an application are intercepted, and a conditional statement identified by a tenant is added according to an operation type of the SQL statement, so as to replace a required parameter after a new SQL statement is obtained. On the premise of not changing SQL (structured query language) statements of the application program, the conditional statements and parameters of tenant identification are automatically added, and the existing application program is upgraded into an SAAS application program on a database level.
To achieve the above object, according to an aspect of the embodiments of the present invention, a method for processing an SQL statement is provided.
The processing method of the SQL statement of the embodiment of the invention comprises the following steps: intercepting all SQL statements in an application program, and analyzing the SQL statements to acquire the operation types of the SQL statements; adding a conditional statement of a tenant identifier in the SQL statement according to the operation type to generate a new SQL statement; and acquiring the value of the tenant identification and the parameter value of the SQL statement, and transmitting the value of the tenant identification and the parameter value into the new SQL statement.
Optionally, the operation types include query, modification, deletion, and addition; adding a conditional statement of a tenant identifier in the SQL statement according to the operation type to generate a new SQL statement, wherein the method comprises the following steps: if the operation type is query, modification or deletion, adding a conditional statement of the tenant identification into a where clause of the SQL statement; and if the operation type is newly added and no column name corresponding to the tenant identification exists in the newly added column, inserting the column name into the newly added column, and writing the parameter corresponding to the tenant identification into the value corresponding to the column name.
optionally, the adding the conditional statement of the tenant identity to the where clause of the SQL statement includes: if the expression of the where clause is null, adding an expression of a conditional statement comprising the tenant identification; and if the expression of the where clause is not null, connecting the expression with the conditional statement identified by the tenant.
optionally, said passing the value of the tenant identity and the parameter value into the new SQL statement comprises: analyzing the new SQL statement to obtain the types and the positions of the identifiers of all the parameters in the new SQL statement; and correspondingly transmitting the value of the tenant identification and the parameter value into the new SQL statement according to the type and the position of the identifier.
Optionally, after the step of importing the value of the tenant identity and the parameter value into the new SQL statement, the method further includes: predicting the data volume of the tenant, and establishing a new database table when the magnitude of the data volume is equal to a preset threshold; the new database table and the original database table of the tenant have the same structure and different table names; adding configuration information in the application program; the configuration information comprises a table name of the original database table, a tenant identification and a table name of the new database table; intercepting all the new SQL statements in the application program, and analyzing the new SQL statements to acquire the table names and the tenant identifications of the original database tables; and determining that the table name and the tenant identification of the original database table exist in the configuration information, and replacing the table name of the original database table in the new SQL statement with the table name of the corresponding new database table.
optionally, the configuration information comprises a storage location of the new database table; after the step of determining that the table name of the original database table and the tenant identifier exist in the configuration information, the method further includes: and when the storage position of the configuration information is not empty, updating the storage position of the original database table in the application program according to the storage position.
To achieve the above object, according to an aspect of the embodiments of the present invention, there is provided a processing apparatus for an SQL statement.
The processing device of the SQL statement of the embodiment of the invention comprises: the system comprises an interception and analysis module, a database module and a query module, wherein the interception and analysis module is used for intercepting all SQL statements in an application program and analyzing the SQL statements to acquire the operation types of the SQL statements; the adding and generating module is used for adding a conditional statement of the tenant identification in the SQL statement according to the operation type so as to generate a new SQL statement; and the acquisition and transmission module is used for acquiring the value of the tenant identifier and the parameter value of the SQL statement and transmitting the value of the tenant identifier and the parameter value into the new SQL statement.
Optionally, the operation types include query, modification, deletion, and addition; the addition generation module is further configured to: if the operation type is query, modification or deletion, adding a conditional statement of the tenant identification into a where clause of the SQL statement; and if the operation type is newly added and no column name corresponding to the tenant identification exists in the newly added column, inserting the column name into the newly added column, and writing the parameter corresponding to the tenant identification into the value corresponding to the column name.
optionally, the adding and generating module is further configured to: if the expression of the where clause is null, adding an expression of a conditional statement comprising the tenant identification; and if the expression of the where clause is not null, connecting the expression with the conditional statement of the tenant identification.
Optionally, the get-in module is further configured to: analyzing the new SQL statement to obtain the types and the positions of the identifiers of all the parameters in the new SQL statement; and correspondingly transmitting the value of the tenant identification and the parameter value into the new SQL statement according to the identifier type and the position.
Optionally, the apparatus further comprises: the replacement establishing module is used for predicting the data volume of the tenant, and when the magnitude of the data volume is equal to a preset threshold value, a new database table is established; the new database table and the original database table of the tenant have the same structure and different table names; adding configuration information in the application program; the configuration information comprises a table name of the original database table, a tenant identification and a table name of the new database table; intercepting all the new SQL statements in the application program, and analyzing the new SQL statements to acquire the table names and the tenant identifications of the original database tables; and determining that the table name and the tenant identification of the original database table exist in the configuration information, and replacing the table name of the original database table in the new SQL statement with the table name of the corresponding new database table.
Optionally, the configuration information comprises a storage location of the new database table; the device further comprises: and the storage location updating module is used for updating the storage location of the original database table in the application program according to the storage location when the storage location of the configuration information is not empty.
To achieve the above object, according to still another aspect of embodiments of the present invention, there is provided an electronic apparatus.
an electronic device of an embodiment of the present invention includes: one or more processors; the storage device is used for storing one or more programs, and when the one or more programs are executed by the one or more processors, the one or more processors implement the processing method of the SQL statement according to the embodiment of the invention.
to achieve the above object, according to still another aspect of embodiments of the present invention, there is provided a computer-readable medium.
A computer-readable medium of an embodiment of the present invention stores thereon a computer program, which, when executed by a processor, implements a processing method of an SQL statement of an embodiment of the present invention.
One embodiment of the above invention has the following advantages or benefits: intercepting all SQL sentences in the application program, adding conditional sentences of the tenant identities according to the operation types of the SQL sentences so as to replace the required parameters after obtaining new SQL sentences, and automatically adding the conditional sentences and the parameters of the tenant identities without changing the SQL sentences of the application program under the condition of transparency to the application program, thereby realizing the upgrading of the existing application program into an SAAS application program at the database level; respectively processing the query, modification, deletion and addition SQL sentences to obtain corresponding new SQL sentences; by presetting configuration information in the application program, the database tables of the tenants with large data volume difference and the tenants with small data volume difference are physically isolated under the condition of transparency to the application program.
further effects of the above-mentioned non-conventional alternatives will be described below in connection with the embodiments.
drawings
The drawings are included to provide a better understanding of the invention and are not to be construed as unduly limiting the invention. Wherein:
FIG. 1 is a schematic diagram of the main steps of a processing method of an SQL statement according to an embodiment of the invention;
FIG. 2 is a schematic main flow diagram of a processing method of an SQL statement according to an embodiment of the invention;
FIG. 3 is a schematic diagram of the main modules of a SQL statement processing device according to an embodiment of the invention;
FIG. 4 is an exemplary system architecture diagram in which embodiments of the present invention may be employed;
FIG. 5 is a schematic diagram of a computer apparatus suitable for use in an electronic device to implement an embodiment of the invention.
Detailed Description
Exemplary embodiments of the present invention are described below with reference to the accompanying drawings, in which various details of embodiments of the invention are included to assist understanding, and which are to be considered as merely exemplary. Accordingly, those of ordinary skill in the art will recognize that various changes and modifications of the embodiments described herein can be made without departing from the scope and spirit of the invention. Also, descriptions of well-known functions and constructions are omitted in the following description for clarity and conciseness.
fig. 1 is a schematic diagram of main steps of a processing method of an SQL statement according to an embodiment of the present invention. As shown in fig. 1, the method for processing an SQL statement according to an embodiment of the present invention mainly includes the following steps:
Step S101: intercepting all SQL statements in an application program, and analyzing the SQL statements to acquire the operation types of the SQL statements. In the embodiment, all SQL sentences in an application program can be intercepted by frames such as MyBatis, Hibernate and the like, wherein MyBatis is a Java-based persistent layer frame and supports customized SQL, stored procedures and high-level mapping; hibernate is an object relational mapping framework of open source codes, and can automatically generate SQL statements and automatically execute the SQL statements, so that Java programmers can use object programming thinking to manipulate a database as desired. The parsed SQL statement includes four operation types, which are query, modification, deletion and addition.
Step S102: and adding a conditional statement of a tenant identification in the SQL statement according to the operation type to generate a new SQL statement. If the operation type is query, modification or deletion, adding a conditional statement of the tenant identification into a where clause of the SQL statement; and if the operation type is newly added and no column name corresponding to the tenant identification exists in the newly added column, inserting the column name into the newly added column, and writing the parameter corresponding to the tenant identification into the value corresponding to the column name.
step S103: and acquiring the value of the tenant identification and the parameter value of the SQL statement, and transmitting the value of the tenant identification and the parameter value into the new SQL statement. Acquiring all parameter values from the intercepted SQL statement, acquiring the value of the tenant identification from the context of the access request, and correspondingly transmitting the value of the tenant identification and the parameter values into a new SQL statement according to the types and the positions of the identifiers of all parameters in the new SQL statement. Through the process, the condition statement and the parameter of the tenant identification are automatically added in the SQL statement on the premise of not changing the SQL statement of the application program, and the existing application program is upgraded into the SAAS application program on a database level.
Fig. 2 is a main flow diagram illustrating a processing method of an SQL statement according to an embodiment of the present invention. As shown in fig. 2, the processing method of the SQL statement according to the embodiment of the present invention mainly includes the following steps:
step S201: intercepting all SQL statements in an application program, and analyzing the SQL statements to acquire the operation types of the SQL statements. All SQL statements in the application can be intercepted by MyBatis, Hibernate, etc. The intercepted SQL statement is divided into four operation types as follows: querying (Select), modifying (Update), deleting (Delete) and adding (Insert), analyzing to obtain an Abstract Syntax Tree (AST), and obtaining the operation type of the SQL statement through the AST.
If the operation type is a new addition and a column name corresponding to the tenant identity is not in a column of data to be newly added, inserting the column name into the column of the data to be newly added, and writing a parameter corresponding to the tenant identity into a value corresponding to the column name, wherein the conditional statement of the tenant identity can be tableme, tenantId represents a parameter, which can be an actual numerical value or a wildcard dynamic parameter (such as?), and since a database can be optimized and cached for the SQL sentence containing the wildcard dynamic parameter, the wildcard dynamic parameter is preferentially selected, and the specific addition process is as follows:
(1) The syntax format of the Select statement is:
SELECT select_expr[,select_expr…]
FROM table_references
[WHERE where_condition]
[HAVING where_condition]
The processing of the from clause is divided into two cases, the from clause in the first case is a table, and at this time, a conditional statement of a tenant identity is directly added to the where clause, and the conditional statement may specifically be: tentid, where if the table does not define an alias, then tableName is the real name of the table; if the table defines an alias, the tableName is the alias of the table, the column names of tentId are only examples, and the table can be modified into other names by adopting a configuration parameter mode in practical application. In another case, the from clause is a subquery, and recursive processing is required, that is, the subquery is used as an SQL statement, recursion is performed from the beginning, whether the from clause, the where clause, and the like exist in the subquery is checked, and a conditional statement of the tenant identification is added.
join clause: and adding a conditional statement of the tenant identification in the where clause.
The changing clause AND the where clause execute the same processing logic, judge the type of the clause, AND if the clause is a binary join symbol (such as AND, OR, OR AND the like), the left AND right clauses of the binary join symbol need to be recursively processed; if the In connector is the In connector, all expressions In the In list need to be circulated, and then each expression is processed recursively; if the query is a sub-query, the sub-query needs to be processed recursively; if it is () connector, then the sub-expressions in parenthesis need to be recursively processed; if it is an exist expression, the expression needs to be recursively processed. The recursive processing is a conditional statement that takes the above situation as one SQL statement, recurses from the beginning, and checks whether there are a from clause, a where clause, and the like in all expressions, sub-queries, sub-expressions in brackets, or exist expressions of the binary join sign left and right clauses, in list, and adds tenant identification.
tentId needs to be added into a where clause expression, if the intercepted SQL sentence expression of the where clause is null, a new where expression of a conditional statement including tenant identification is added; and if the expression of the where clause in the intercepted SQL statement is not null, connecting the expression with the conditional statement identified by the tenant. The condition statement of the tenant identity is placed after the original condition of the where expression or before the original condition, and the decision can be made in a configuration mode. For example, if the word expression of the intercepted SQL statement is not null, and if the word a is 'b', the word a is 'b' and table name.
the following examples illustrate: example one (from clause is a table):
assume that the intercepted SQL statement is: select from a;
The new SQL statement is: SELECT*FROM a WHERE a.tenantId=?.
example two (from clause is a sub-query):
Assume that the intercepted SQL statement is: SELECT FROM (SELECT FROM tab1 inner joint tab2 where tab1.id ═ tab2.id) temp 1;
The new SQL statement is: ELECT*FROM(SELECT*FROM tab1 INNER JOIN tab2 WHERE tab2.tenantId=?AND tab1.tenantId=?AND tab1.id=tab2.id)temp1.
Example three (from clause is a table plus one subquery):
Assume that the intercepted SQL statement is: select name, depth, sal from em where depth no ═ NEW YORK';
The new SQL statement is: SELECT ename,deptno,sal FROM emp WHERE emp.tenantId=?AND deptno=(SELECT deptno FROM dept WHERE dept.tenantId=?AND loc='NEW.
(2) The syntax format of the Update statement is:
UPDATA table_reference
SET assignment_list
[WHERE where_condition]
the Update statement comprises a from clause, a join clause and a where clause, and the processing process of the condition statement added with the tenant identification is the same as that of the corresponding clause of the Select statement.
(3) The syntax format of the Delete statement is:
Delete[LOW_PRIORITY][QUICK][IGNORE]FROM tbl_name
[WHERE where_condition]
The Delete statement comprises a from clause, a join clause and a where clause, and the processing process of the conditional statement added with the tenant identification is the same as that of the corresponding clause of the Select statement.
(4) the syntactic format of the Insert statement is:
INSERT[LOW_PRIORITY|HIGH_PRIORITY][IGNORE]
[INTO]tbl_name
[PARTITION(partition_name[,partition_name]…)]
[(col_name[,col_name]…)]
SELECT…
[ON DUPLICATE KEY UPDATE assignment_list]
Judging whether the column of the Insert contains a column name corresponding to the tenant identification or not, and if the column name corresponding to the tenant identification is contained, performing no processing; and if the column name corresponding to the tenant identification is not contained, inserting the column name corresponding to the tenant identification, and simultaneously adding a parameter tennantId of the tenant identification into a value (values) corresponding to the column name. For example, the intercepted Insert statement is: insert a (NAME, SEX) values ('xx', '1'), then the new insert statement is: insert a (tenantId, NAME, SEX) values (: tenantId, 'xx', '1').
Assuming that the parameters of tenant identification are the expression style of tennantid, the processing from step S203 to step S205 is exemplified by the SQL statement of Select from a where the tennantid is tennantid And a. id? And a. name?, two types of dynamic parameters, namely a parameter with? identifier And a parameter with the identifier, are obtained through the parsing, And then the identifier with the type of the bit from head to tail is sequentially recorded, for example, the recorded content is:?, the actual business meaning is that the 0 th bit is a parameter with the identifier, And the 1 st bit And the 2 nd bit are parameters with the identifier?.
While analyzing, the database cannot directly process the parameter tennantid in AND tablename, tennantid, AND the parameter with identifier needs to be replaced by the parameter with identifier?, so the result of replacement is that Select from a where a. tennantid is? AND a. id is? AND a. name is?.
step S204: and acquiring all parameter values from the SQL statement, and acquiring the value of the tenant identification from the context of the access request. The client sends an access request to the database, and in an actual application program, generally, the context of the access request is put into a thread variable, and the value of the tenant identifier is obtained from the thread variable.
Step S205, correspondingly transmitting the parameter values and the values of the tenant identifications into the new SQL statement according to the type and the position of the identifier to execute the new SQL statement, wherein? is taken as an example, firstly, the access position of a parameter list of the intercepted SQL statement is initialized to be 0, the first parameter of the new SQL statement is a parameter with an identifier, and at the moment, a tenant is required to be identified to the new parameter list corresponding to the new SQL statement, the second parameter is a parameter with an identifier?, at the moment, the parameter with the access position of 0 is required to be read from the original parameter list, then, the parameter is pushed into the new parameter list, and then, the access position of the original parameter list is +1, the third parameter is still a parameter with an identifier?, at the moment, the parameter with the access position of 1 is required to be read from the original parameter list, then, the parameter is pushed into the new parameter list, the access position of the original parameter list is +1, and the new parameter list is processed by analogy, and the new SQL statement, the Myberis and the new SQL statement can be executed continuously.
The following exemplifies a specific process of generating a new parameter list in step S205.
Assuming that the tenant is identified as 1101, the intercepted SQL statement is selected name, id, sex from user where user id? and user city?, the parameter list is 12222 and 'SD', the new SQL statement is selected name, id, sex from user where tenninld? and user id? and user city?, and the new parameter list is 1101, 12222 and 'SD'.
In a preferred embodiment, if certain SQL statements do not require the automatic addition of tenant-identified conditional statements, they may be filtered out in a configuration file. Such as: the SQL statements to be filtered in the configuration file are: and (c) selecting from a where a is 'b', judging whether the intercepted SQL statement is the same as the SQL statement, and if so, filtering the intercepted SQL statement, thus realizing the purpose of not automatically adding the conditional statement of the tenant identification in the SQL statement.
in the SAAS application, the data volume difference of each tenant is large, and it is necessary to physically isolate the tenant with large data volume and the tenant with small data volume from the dimension of the database table under the condition that the program code of the developer is not changed, and the specific implementation process is shown in step S206 to step S209.
step S206: predicting the data volume of the tenant, and establishing a new database table when the magnitude of the data volume is equal to a preset threshold; and the new database table and the original database table of the tenant have the same structure and different table names. When each tenant accesses the SAAS application program, the data volume of each tenant can be estimated, and if the magnitude of the data volume of a certain tenant reaches a preset threshold, operation and maintenance personnel of the application program can independently establish a new database table with the same structure as the original database table for the tenant. The new database table is different from the original database table in table name, and the storage can be isolated independently.
Step S207: adding configuration information in the application program; the configuration information comprises a table name of the original database table, a tenant identification, a table name of the new database table and a storage position of the new database table. Adding the following configuration information in the application program: table a, tenant identity- → database domain name: port number: the database comprises a table, a database name and a port number, wherein A is the table name of an original database table, A1 is the table name of a new database table, and the database name and the port number represent the storage position of the new database table; the specific meanings are as follows: in table a, the configuration information corresponding to the tenant identifier is table a1 under a certain port number under the database domain name. Here, the domain name and the port number of the database may be null, which means that the original database table and the new database table are stored in the same machine; if not, the representative original database table and the new database table are stored in different machines.
Step S208: intercepting all the new SQL statements in the application program, and analyzing the new SQL statements to acquire the table name and the tenant identification of the original database table. And analyzing the intercepted new SQL statement to obtain the table name and the tenant identification of the original database table.
step S209: and determining that the table name and the tenant identification of the original database table exist in the configuration information, and replacing the table name of the original database table in the new SQL statement with the table name of the corresponding new database table. And matching the acquired table name and the tenant identification of the original database table with the configuration information, and if the table name and the tenant identification can be matched with the configuration information, replacing the table name in the new SQL statement with the table name of the new database table. I.e., replace table a with table a 1.
In addition, if the new database table and the original database table are stored in different machines, the data source needs to be modified into the database domain name and the port number in the configuration information to point to the actual storage machine.
According to the SQL statement processing method, all SQL statements in the application program are intercepted, the conditional statement of the tenant identification is added according to the operation type of the SQL statement so as to replace the required parameters after a new SQL statement is obtained, the conditional statement and the parameters of the tenant identification can be automatically added without changing the SQL statement of the application program under the condition of transparency of the application program, and the existing application program is upgraded into the SAAS application program on a database level; respectively processing the query, modification, deletion and addition SQL sentences to obtain corresponding new SQL sentences; by presetting configuration information in the application program, the database tables of the tenants with large data volume difference and the tenants with small data volume difference are physically isolated under the condition of transparency to the application program.
Fig. 3 is a schematic diagram of main modules of an SQL statement processing apparatus according to an embodiment of the present invention. As shown in fig. 3, the apparatus 300 for processing an SQL statement according to an embodiment of the present invention mainly includes:
The interception and analysis module 301 is configured to intercept all SQL statements in an application program, and analyze the SQL statements to obtain an operation type of the SQL statements. All SQL statements in the application program can be intercepted by MyBatis, Hibernate and the like, and the analyzed SQL statements comprise four operation types, namely query, modification, deletion and addition.
An adding and generating module 302, configured to add a conditional statement identified by a tenant in the SQL statement according to the operation type, so as to generate a new SQL statement. If the operation type is query, modification or deletion, adding a conditional statement of the tenant identification into a where clause of the SQL statement; and if the operation type is newly added and no column name corresponding to the tenant identification exists in the newly added column, inserting the column name into the newly added column, and writing the parameter corresponding to the tenant identification into the value corresponding to the column name.
an obtaining and importing module 303, configured to obtain the value of the tenant identifier and the parameter value of the SQL statement, and import the value of the tenant identifier and the parameter value into the new SQL statement. Acquiring all parameter values from the intercepted SQL statement, acquiring the value of the tenant identification from the context of the access request, and correspondingly transmitting the value of the tenant identification and the parameter values into a new SQL statement according to the types and the positions of the identifiers of all parameters in the new SQL statement. The module realizes that the conditional statement and the parameter of the tenant identification are automatically added in the SQL statement on the premise of not changing the SQL statement of the application program, and the existing application program is upgraded into the SAAS application program on the database level.
In addition, the apparatus 300 for processing an SQL statement according to the embodiment of the present invention may further include: a replacement module and a storage location update module (not shown in fig. 3) are established. The establishing and replacing module is used for predicting the data volume of the tenant, and when the magnitude of the data volume is equal to a preset threshold value, a new database table is established; the new database table and the original database table of the tenant have the same structure and different table names; adding configuration information in the application program; the configuration information comprises a table name of the original database table, a tenant identification and a table name of the new database table; intercepting all the new SQL statements in the application program, and analyzing the new SQL statements to acquire the table names and the tenant identifications of the original database tables; and determining that the table name and the tenant identification of the original database table exist in the configuration information, and replacing the table name of the original database table in the new SQL statement with the table name of the corresponding new database table. And the storage location updating module is used for updating the storage location of the original database table in the application program according to the storage location when the storage location of the configuration information is not empty.
from the above description, it can be seen that all SQL statements in the application program are intercepted, the conditional statement of the tenant identity is added according to the operation type of the SQL statement to replace the required parameters after obtaining a new SQL statement, and the conditional statement and the parameters of the tenant identity can be automatically added without changing the SQL statement of the application program under the condition of transparency to the application program, so that the existing application program is upgraded to the SAAS application program at the database level; respectively processing the query, modification, deletion and addition SQL sentences to obtain corresponding new SQL sentences; by presetting configuration information in the application program, the database tables of the tenants with large data volume difference and the tenants with small data volume difference are physically isolated under the condition of transparency to the application program.
fig. 4 shows an exemplary system architecture 400 to which the processing method of the SQL statement or the processing apparatus of the SQL statement of the embodiment of the present invention can be applied.
As shown in fig. 4, the system architecture 400 may include terminal devices 401, 402, 403, a network 404, and a server 405. The network 404 serves as a medium for providing communication links between the terminal devices 401, 402, 403 and the server 405. Network 404 may include various types of connections, such as wire, wireless communication links, or fiber optic cables, to name a few.
A user may use terminal devices 401, 402, 403 to interact with a server 405 over a network 404 to receive or send messages or the like. The terminal devices 401, 402, 403 may have various communication client applications installed thereon, such as shopping applications, web browser applications, search applications, instant messaging tools, mailbox clients, social platform software, and the like.
the terminal devices 401, 402, 403 may be various electronic devices having a display screen and supporting web browsing, including but not limited to smart phones, tablet computers, laptop portable computers, desktop computers, and the like.
The server 405 may be a server providing various services, such as a background management server providing support for click events generated by users using the terminal devices 401, 402, 403. The background management server may analyze and perform other processing on the received click data, text content, and other data, and feed back a processing result (for example, target push information, product information — just an example) to the terminal device.
It should be noted that the processing method of the SQL statement provided in the embodiment of the present application is generally executed by the server 405, and accordingly, the processing device of the SQL statement is generally disposed in the server 405.
It should be understood that the number of terminal devices, networks, and servers in fig. 4 is merely illustrative. There may be any number of terminal devices, networks, and servers, as desired for implementation.
The invention also provides an electronic device and a computer readable medium according to the embodiment of the invention.
the electronic device of the present invention includes: one or more processors; the storage device is used for storing one or more programs, and when the one or more programs are executed by the one or more processors, the one or more processors implement the processing method of the SQL statement according to the embodiment of the invention.
The computer readable medium of the present invention stores thereon a computer program, which when executed by a processor implements a processing method of an SQL statement of an embodiment of the present invention.
referring now to FIG. 5, shown is a block diagram of a computer system 500 suitable for use in implementing an electronic device of an embodiment of the present invention. The electronic device shown in fig. 5 is only an example, and should not bring any limitation to the functions and the scope of use of the embodiments of the present invention.
as shown in fig. 5, the computer system 500 includes a Central Processing Unit (CPU)501 that can perform various appropriate actions and processes according to a program stored in a Read Only Memory (ROM)502 or a program loaded from a storage section 508 into a Random Access Memory (RAM) 503. In the RAM 503, various programs and data necessary for the operation of the computer system 500 are also stored. The CPU 501, ROM 502, and RAM 503 are connected to each other via a bus 504. An input/output (I/O) interface 505 is also connected to bus 504.
The following components are connected to the I/O interface 505: an input portion 506 including a keyboard, a mouse, and the like; an output portion 507 including a display such as a Cathode Ray Tube (CRT), a Liquid Crystal Display (LCD), and the like, and a speaker; a storage portion 508 including a hard disk and the like; and a communication section 509 including a network interface card such as a LAN card, a modem, or the like. The communication section 509 performs communication processing via a network such as the internet. The driver 510 is also connected to the I/O interface 505 as necessary. A removable medium 511 such as a magnetic disk, an optical disk, a magneto-optical disk, a semiconductor memory, or the like is mounted on the drive 510 as necessary, so that a computer program read out therefrom is mounted into the storage section 508 as necessary.
In particular, the processes described above with respect to the main step diagrams may be implemented as computer software programs, according to embodiments of the present disclosure. For example, embodiments of the present disclosure include a computer program product comprising a computer program embodied on a computer readable medium, the computer program containing program code for performing the method illustrated in the main step diagram. In such an embodiment, the computer program may be downloaded and installed from a network through the communication section 509, and/or installed from the removable medium 511. The computer program performs the above-described functions defined in the system of the present invention when executed by the Central Processing Unit (CPU) 501.
It should be noted that the computer readable medium shown in the present invention can be a computer readable signal medium or a computer readable storage medium or any combination of the two. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any combination of the foregoing. More specific examples of the computer readable storage medium may include, but are not limited to: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a Random Access Memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the present invention, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. In the present invention, however, a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated data signal may take many forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may also be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to: wireless, wire, fiber optic cable, RF, etc., or any suitable combination of the foregoing.
The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams or flowchart illustration, and combinations of blocks in the block diagrams or flowchart illustration, can be implemented by special purpose hardware-based systems which perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The modules described in the embodiments of the present invention may be implemented by software or hardware. The described modules may also be provided in a processor, which may be described as: a processor includes an intercept parsing module, an add generation module, and a get-in module. For example, the interception and analysis module may also be described as a module that intercepts all SQL statements in an application and analyzes the SQL statements to obtain the operation types of the SQL statements.
As another aspect, the present invention also provides a computer-readable medium that may be contained in the apparatus described in the above embodiments; or may be separate and not incorporated into the device. The computer readable medium carries one or more programs which, when executed by a device, cause the device to comprise: intercepting all SQL statements in an application program, and analyzing the SQL statements to acquire the operation types of the SQL statements; adding a conditional statement of a tenant identifier in the SQL statement according to the operation type to generate a new SQL statement; and acquiring the value of the tenant identification and the parameter value of the SQL statement, and transmitting the value of the tenant identification and the parameter value into the new SQL statement.
From the above description, it can be seen that all SQL statements in the application program are intercepted, the conditional statement of the tenant identity is added according to the operation type of the SQL statement to replace the required parameters after obtaining a new SQL statement, and the conditional statement and the parameters of the tenant identity can be automatically added without changing the SQL statement of the application program under the condition of transparency to the application program, so that the existing application program is upgraded to the SAAS application program at the database level; respectively processing the query, modification, deletion and addition SQL sentences to obtain corresponding new SQL sentences; by presetting configuration information in the application program, the database tables of the tenants with large data volume difference and the tenants with small data volume difference are physically isolated under the condition of transparency to the application program.
The product can execute the method provided by the embodiment of the invention, and has corresponding functional modules and beneficial effects of the execution method. For technical details that are not described in detail in this embodiment, reference may be made to the method provided by the embodiment of the present invention.
The above-described embodiments should not be construed as limiting the scope of the invention. Those skilled in the art will appreciate that various modifications, combinations, sub-combinations, and substitutions can occur, depending on design requirements and other factors. Any modification, equivalent replacement, and improvement made within the spirit and principle of the present invention should be included in the protection scope of the present invention.

Claims (14)

1. A method for processing SQL statements is characterized by comprising the following steps:
Intercepting all SQL statements in an application program, and analyzing the SQL statements to acquire the operation types of the SQL statements;
Adding a conditional statement of a tenant identifier in the SQL statement according to the operation type to generate a new SQL statement;
And acquiring the value of the tenant identification and the parameter value of the SQL statement, and transmitting the value of the tenant identification and the parameter value into the new SQL statement.
2. The method of claim 1, wherein the operation types include query, modify, delete, and add;
adding a conditional statement of a tenant identifier in the SQL statement according to the operation type to generate a new SQL statement, wherein the method comprises the following steps:
If the operation type is query, modification or deletion, adding a conditional statement of the tenant identification into a where clause of the SQL statement;
and if the operation type is newly added and no column name corresponding to the tenant identification exists in the newly added column, inserting the column name into the newly added column, and writing the parameter corresponding to the tenant identification into the value corresponding to the column name.
3. the method of claim 2, wherein the adding the conditional statement of tenant identity to the where clause of the SQL statement comprises:
if the expression of the where clause is null, adding an expression of a conditional statement comprising the tenant identification;
And if the expression of the where clause is not null, connecting the expression with the conditional statement identified by the tenant.
4. The method of claim 1, wherein said passing the value of the tenant identity and the parameter value into the new SQL statement comprises:
Analyzing the new SQL statement to obtain the types and the positions of the identifiers of all the parameters in the new SQL statement;
and correspondingly transmitting the value of the tenant identification and the parameter value into the new SQL statement according to the type and the position of the identifier.
5. The method of any of claims 1 to 4, wherein after the step of passing the value of the tenant identity and the parameter value into the new SQL statement, further comprising:
Predicting the data volume of the tenant, and establishing a new database table when the magnitude of the data volume is equal to a preset threshold; the new database table and the original database table of the tenant have the same structure and different table names;
Adding configuration information in the application program; the configuration information comprises a table name of the original database table, a tenant identification and a table name of the new database table;
Intercepting all the new SQL statements in the application program, and analyzing the new SQL statements to acquire the table names and the tenant identifications of the original database tables;
And determining that the table name and the tenant identification of the original database table exist in the configuration information, and replacing the table name of the original database table in the new SQL statement with the table name of the corresponding new database table.
6. the method of claim 5, wherein the configuration information includes a storage location of the new database table;
After the step of determining that the table name of the original database table and the tenant identifier exist in the configuration information, the method further includes:
And when the storage position of the configuration information is not empty, updating the storage position of the original database table in the application program according to the storage position.
7. An apparatus for processing an SQL statement, comprising:
The system comprises an interception and analysis module, a database module and a query module, wherein the interception and analysis module is used for intercepting all SQL statements in an application program and analyzing the SQL statements to acquire the operation types of the SQL statements;
The adding and generating module is used for adding a conditional statement of the tenant identification in the SQL statement according to the operation type so as to generate a new SQL statement;
and the acquisition and transmission module is used for acquiring the value of the tenant identifier and the parameter value of the SQL statement and transmitting the value of the tenant identifier and the parameter value into the new SQL statement.
8. the apparatus of claim 7, wherein the operation types include query, modify, delete, and add;
The addition generation module is further configured to:
if the operation type is query, modification or deletion, adding a conditional statement of the tenant identification into a where clause of the SQL statement; and
and if the operation type is newly added and no column name corresponding to the tenant identification exists in the newly added column, inserting the column name into the newly added column, and writing the parameter corresponding to the tenant identification into the value corresponding to the column name.
9. the apparatus of claim 8, wherein the addition generation module is further configured to:
If the expression of the where clause is null, adding an expression of a conditional statement comprising the tenant identification; and
and if the expression of the where clause is not null, connecting the expression with the conditional statement identified by the tenant.
10. The apparatus of claim 7, wherein the acquisition afferent module is further configured to:
Analyzing the new SQL statement to obtain the types and the positions of the identifiers of all the parameters in the new SQL statement; and
And correspondingly transmitting the value of the tenant identification and the parameter value into the new SQL statement according to the type and the position of the identifier.
11. The apparatus of any one of claims 7 to 10, further comprising: establishing a replacement module for
Predicting the data volume of the tenant, and establishing a new database table when the magnitude of the data volume is equal to a preset threshold; the new database table and the original database table of the tenant have the same structure and different table names;
Adding configuration information in the application program; the configuration information comprises a table name of the original database table, a tenant identification and a table name of the new database table;
Intercepting all the new SQL statements in the application program, and analyzing the new SQL statements to acquire the table names and the tenant identifications of the original database tables;
And determining that the table name and the tenant identification of the original database table exist in the configuration information, and replacing the table name of the original database table in the new SQL statement with the table name of the corresponding new database table.
12. the apparatus of claim 11, wherein the configuration information comprises a storage location of the new database table;
the device further comprises: and the storage location updating module is used for updating the storage location of the original database table in the application program according to the storage location when the storage location of the configuration information is not empty.
13. An electronic device, comprising:
One or more processors;
A storage device for storing one or more programs,
when executed by the one or more processors, cause the one or more processors to implement the method of any one of claims 1-6.
14. A computer-readable medium, on which a computer program is stored, which, when being executed by a processor, carries out the method according to any one of claims 1-6.
CN201810264130.4A 2018-03-28 2018-03-28 SQL statement processing method and device Pending CN110555030A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810264130.4A CN110555030A (en) 2018-03-28 2018-03-28 SQL statement processing method and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810264130.4A CN110555030A (en) 2018-03-28 2018-03-28 SQL statement processing method and device

Publications (1)

Publication Number Publication Date
CN110555030A true CN110555030A (en) 2019-12-10

Family

ID=68733891

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810264130.4A Pending CN110555030A (en) 2018-03-28 2018-03-28 SQL statement processing method and device

Country Status (1)

Country Link
CN (1) CN110555030A (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949491A (en) * 2020-08-14 2020-11-17 中国工商银行股份有限公司 SQL extraction method and device for MyBatis application program
CN112597004A (en) * 2020-12-11 2021-04-02 广州品唯软件有限公司 SQL statement performance test method and device, computer equipment and storage medium
CN112597169A (en) * 2020-12-30 2021-04-02 山东恒远智能科技有限公司 Method for realizing industrial software multi-tenant data isolation
CN112988787A (en) * 2021-05-17 2021-06-18 太平金融科技服务(上海)有限公司深圳分公司 Database data processing method and device, computer equipment and storage medium
CN113111079A (en) * 2021-04-13 2021-07-13 北京沃东天骏信息技术有限公司 Database execution statement generation method and device
CN113821531A (en) * 2021-09-28 2021-12-21 山东舜网传媒股份有限公司 Method, system and equipment for separating converged media multi-tenant data
CN114896273A (en) * 2022-07-12 2022-08-12 苏州青颖飞帆软件科技有限公司 SQL statement configuration method and equipment compatible with storage process and storage medium
CN116756727A (en) * 2023-08-22 2023-09-15 浙江华东工程数字技术有限公司 Data authority control method and device, electronic equipment and storage medium

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1881208A (en) * 2005-06-14 2006-12-20 联想(北京)有限公司 Construction method for dynamic structured query language statement
US20090259683A1 (en) * 2008-04-14 2009-10-15 Fiberlink Communications Corporation System and method for business object modeling
CN101788992A (en) * 2009-05-06 2010-07-28 厦门东南融通***工程有限公司 Method and system for converting query sentence of database
CN102467421A (en) * 2010-11-19 2012-05-23 深圳市金蝶友商电子商务服务有限公司 Tenant-data-based processing method and computer
CN102737020A (en) * 2011-03-31 2012-10-17 国际商业机器公司 Method for initializing multi-tenant database, and apparatus thereof
JP2013025446A (en) * 2011-07-19 2013-02-04 Canon Marketing Japan Inc Information processing apparatus, information processing system, information processing method, program and recording medium
CN103399942A (en) * 2013-08-14 2013-11-20 山大地纬软件股份有限公司 Data engine system supporting SaaS multi-tenant function and working method of data engine system
CN104462161A (en) * 2013-10-18 2015-03-25 上海宝信软件股份有限公司 Structural data query method based on distributed database
US9305073B1 (en) * 2012-05-24 2016-04-05 Luminix, Inc. Systems and methods for facilitation communications among customer relationship management users
CN106055582A (en) * 2016-05-20 2016-10-26 中国农业银行股份有限公司 Method and apparatus for replacing table name of database
CN106775770A (en) * 2017-01-16 2017-05-31 兴唐通信科技有限公司 The lookup method of query statement is built based on category information
CN107122364A (en) * 2016-02-25 2017-09-01 华为技术有限公司 Data manipulation method and data management server
CN107315790A (en) * 2017-06-14 2017-11-03 腾讯科技(深圳)有限公司 A kind of optimization method and device of irrelevant subquery

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1881208A (en) * 2005-06-14 2006-12-20 联想(北京)有限公司 Construction method for dynamic structured query language statement
US20090259683A1 (en) * 2008-04-14 2009-10-15 Fiberlink Communications Corporation System and method for business object modeling
CN101788992A (en) * 2009-05-06 2010-07-28 厦门东南融通***工程有限公司 Method and system for converting query sentence of database
CN102467421A (en) * 2010-11-19 2012-05-23 深圳市金蝶友商电子商务服务有限公司 Tenant-data-based processing method and computer
CN102737020A (en) * 2011-03-31 2012-10-17 国际商业机器公司 Method for initializing multi-tenant database, and apparatus thereof
JP2013025446A (en) * 2011-07-19 2013-02-04 Canon Marketing Japan Inc Information processing apparatus, information processing system, information processing method, program and recording medium
US9305073B1 (en) * 2012-05-24 2016-04-05 Luminix, Inc. Systems and methods for facilitation communications among customer relationship management users
CN103399942A (en) * 2013-08-14 2013-11-20 山大地纬软件股份有限公司 Data engine system supporting SaaS multi-tenant function and working method of data engine system
CN104462161A (en) * 2013-10-18 2015-03-25 上海宝信软件股份有限公司 Structural data query method based on distributed database
CN107122364A (en) * 2016-02-25 2017-09-01 华为技术有限公司 Data manipulation method and data management server
CN106055582A (en) * 2016-05-20 2016-10-26 中国农业银行股份有限公司 Method and apparatus for replacing table name of database
CN106775770A (en) * 2017-01-16 2017-05-31 兴唐通信科技有限公司 The lookup method of query statement is built based on category information
CN107315790A (en) * 2017-06-14 2017-11-03 腾讯科技(深圳)有限公司 A kind of optimization method and device of irrelevant subquery

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949491A (en) * 2020-08-14 2020-11-17 中国工商银行股份有限公司 SQL extraction method and device for MyBatis application program
CN111949491B (en) * 2020-08-14 2023-10-27 中国工商银行股份有限公司 SQL extraction method and device of MyBatis application program
CN112597004A (en) * 2020-12-11 2021-04-02 广州品唯软件有限公司 SQL statement performance test method and device, computer equipment and storage medium
CN112597169A (en) * 2020-12-30 2021-04-02 山东恒远智能科技有限公司 Method for realizing industrial software multi-tenant data isolation
CN113111079A (en) * 2021-04-13 2021-07-13 北京沃东天骏信息技术有限公司 Database execution statement generation method and device
CN112988787A (en) * 2021-05-17 2021-06-18 太平金融科技服务(上海)有限公司深圳分公司 Database data processing method and device, computer equipment and storage medium
CN112988787B (en) * 2021-05-17 2021-07-20 太平金融科技服务(上海)有限公司深圳分公司 Database data processing method and device, computer equipment and storage medium
CN113821531A (en) * 2021-09-28 2021-12-21 山东舜网传媒股份有限公司 Method, system and equipment for separating converged media multi-tenant data
CN114896273A (en) * 2022-07-12 2022-08-12 苏州青颖飞帆软件科技有限公司 SQL statement configuration method and equipment compatible with storage process and storage medium
CN116756727A (en) * 2023-08-22 2023-09-15 浙江华东工程数字技术有限公司 Data authority control method and device, electronic equipment and storage medium
CN116756727B (en) * 2023-08-22 2023-12-29 浙江华东工程数字技术有限公司 Data authority control method and device, electronic equipment and storage medium

Similar Documents

Publication Publication Date Title
CN110555030A (en) SQL statement processing method and device
CN109582691B (en) Method and apparatus for controlling data query
CN110324169B (en) Interface management method and device
US10255308B2 (en) Conforming data structure instances to schema versions
CN107491382B (en) Log output method and device
CN109522341B (en) Method, device and equipment for realizing SQL-based streaming data processing engine
CN111666293A (en) Database access method and device
CN109726217B (en) Database operation method, device, equipment and storage medium
CN110858202A (en) Method and device for generating where clause in database query statement
CN111125064B (en) Method and device for generating database schema definition statement
CN110334545B (en) SQL-based permission control method and device and electronic equipment
CN110795315A (en) Method and device for monitoring service
CN113886485A (en) Data processing method, device, electronic equipment, system and storage medium
CN113626223A (en) Interface calling method and device
CN113419789A (en) Method and device for generating data model script
CN108959294B (en) Method and device for accessing search engine
CN108694172B (en) Information output method and device
CN113900944A (en) Logic verification method and device applied to Flink SQL
CN111241189A (en) Method and device for synchronizing data
CN112988583A (en) Method and device for testing syntax compatibility of database
CN113760961A (en) Data query method and device
CN113076343B (en) Data query method, device, equipment and storage medium
CN110688355A (en) Method and device for changing container state
CN112783914B (en) Method and device for optimizing sentences
CN113760969A (en) Data query method and device based on elastic search

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination