CN110543495A - cursor traversal storage method and device - Google Patents

cursor traversal storage method and device Download PDF

Info

Publication number
CN110543495A
CN110543495A CN201910808622.XA CN201910808622A CN110543495A CN 110543495 A CN110543495 A CN 110543495A CN 201910808622 A CN201910808622 A CN 201910808622A CN 110543495 A CN110543495 A CN 110543495A
Authority
CN
China
Prior art keywords
data
cache
vernier
data set
cursor
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
CN201910808622.XA
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 BONC TECHNOLOGY Co Ltd
Original Assignee
BEIJING BONC 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 BONC TECHNOLOGY Co Ltd filed Critical BEIJING BONC TECHNOLOGY Co Ltd
Priority to CN201910808622.XA priority Critical patent/CN110543495A/en
Publication of CN110543495A publication Critical patent/CN110543495A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2425Iterative querying; Query formulation based on the results of a preceding query
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results

Abstract

The embodiment of the invention provides a cursor traversal storage method and device, and belongs to the technical field of database operation. The method comprises the following steps: writing the data segments in the result set into a vernier data set cache, and detecting the data volume in the cache in real time; and if the data volume in the vernier data set cache is larger than a preset threshold value, storing the data segment in the vernier data set cache into a disk file. According to the method provided by the embodiment of the invention, the problem that the data volume of the query result is huge and the cache cannot be stored in the memory is solved by writing the mass data into the disk, and the problem that the network resources occupied for a long time cannot be released when the cursor query result set is traversed is solved. In addition, when the data volume in the vernier data set cache exceeds the upper limit of the system, the data set in the vernier data set cache is written into the temporary disk file. Therefore, the problem that huge data cannot be cached at one time is solved by using the external memory space.

Description

cursor traversal storage method and device
Technical Field
The invention relates to the technical field of database operation, in particular to a cursor traversal storage method and device.
Background
With the continuous development of the Hadoop big data ecosystem, the distributed open source database position is more and more important, and the distributed open source database position is expected to be a further core of the future big data technology development. SQL is a structured query language, which is a standard language for relational databases, and is a general, extremely powerful relational database language. Almost all current database management systems support SQL, which is collection-oriented, where a single SQL statement can produce or process multiple records. While the primary languages (PL/SQL, C/C + +, etc.) are record-oriented, a set of primary variable languages is record-oriented, and a set of primary variables can only store one record at a time. Therefore, the requirement of outputting data to the application program by the SQL statement, that is, reading one record from a certain result set one by one, cannot be satisfied by using only the primary variable. For this purpose, SQL introduces the concept of cursors, which are used to coordinate the two different processing methods.
the cursor result set is a data buffer area set by the DBMS for users, the data buffer area stores the query execution results of SQL statements, each cursor has a name, and the users can acquire records one by one through the cursor, assign the records to the main variable and further process the records by the main language. When the SELECT, INSERT, DELETE, and UPDATE statements are executed in the subject language, the database management system allocates a context area, i.e., a result set buffer, to them in memory. The cursor is a pointer to the buffer or a structured data type, and generally, the implementation of the cursor result set buffer for different database products will vary, but is based on the unique cursor result set of the database.
disclosure of Invention
to solve the above problems, embodiments of the present invention provide a cursor traversal storage method and apparatus that overcome or at least partially solve the above problems.
According to a first aspect of the embodiments of the present invention, there is provided a cursor traversal storage method, including:
Writing the data segments in the result set into a vernier data set cache, and detecting the data volume in the cache in real time;
And if the data volume in the vernier data set cache is larger than a preset threshold value, storing the data segment in the vernier data set cache into a disk file.
According to a second aspect of the embodiments of the present invention, there is provided a cursor traversal storage device, including:
the first storage module is used for writing the data segments in the result set into the vernier data set cache;
The detection module is used for detecting the size of the data volume in the cache in real time;
And the second storage module is used for storing the data segment in the cursor data set cache into the disk file when the data volume in the cursor data set cache is larger than a preset threshold value.
According to a third aspect of embodiments of the present invention, there is provided an electronic apparatus, including:
At least one processor; and
At least one memory communicatively coupled to the processor, wherein:
the memory stores program instructions executable by the processor, the processor calling the program instructions being capable of performing the cursor traversal storing method provided by any of the various possible implementations of the first aspect.
according to a fourth aspect of the present invention, there is provided a non-transitory computer readable storage medium storing computer instructions for causing a computer to perform the cursor traversal storage method provided in any one of the various possible implementations of the first aspect.
according to the cursor traversal storage method and device provided by the embodiment of the invention, the problem that the data volume of the query result is huge and the cache cannot be performed in the memory is solved by writing the mass data into the disk, and the problem that the network resources cannot be released due to long-time occupation when the cursor query result set is traversed is solved. In addition, cache traversal can be performed on the query result sets of various databases.
In addition, when the data volume in the vernier data set cache exceeds the upper limit of the system, the data set in the vernier data set cache is written into the temporary disk file. Similarly, when traversing the data in the result set, reading in the cursor data set cache in sequence according to the data format defined in the metadata. Therefore, the problem that huge data cannot be cached at one time is solved by using the external memory space.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of embodiments of the invention.
Drawings
In order to more clearly illustrate the embodiments of the present invention or the technical solutions in the prior art, the drawings used in the description of the embodiments or the prior art will be briefly described below, and it is obvious that the drawings in the following description are some embodiments of the present invention, and those skilled in the art can also obtain other drawings according to the drawings without creative efforts.
Fig. 1 is a schematic flow chart illustrating a cursor traversal storage method according to an embodiment of the present invention;
FIG. 2 is a schematic diagram of an index of a data segment of a cursor data set according to an embodiment of the present invention;
Fig. 3 is a schematic structural diagram of an index array corresponding to each record in a data segment according to an embodiment of the present invention;
Fig. 4 is a schematic structural diagram of a data record cache according to an embodiment of the present invention;
FIG. 5 is a schematic structural diagram of a cursor traversal storage device according to an embodiment of the present invention;
Fig. 6 is a block diagram of an electronic device according to an embodiment of the present invention.
Detailed Description
In order to make the objects, technical solutions and advantages of the embodiments of the present invention clearer, the technical solutions in the embodiments of the present invention will be clearly and completely described below with reference to the drawings in the embodiments of the present invention, and it is obvious that the described embodiments are some, but not all, embodiments of the present invention. All other embodiments, which can be derived by a person skilled in the art from the embodiments given herein without making any creative effort, shall fall within the protection scope of the present invention.
In the related art, there are two main ways to design a database cursor result set:
1. buffer zone is opened up in internal memory and hardware capacity expansion mode is used as auxiliary mode
this scheme allocates a Context Area (buffer) to the cursor in memory. The cursor is a pointer to the region or a structured data type. And each row of data in the multi-row data query result set is processed independently, because the size of the buffer area is limited, as the data volume increases explosively, the increasing data brings huge pressure to the memory, and most research and development teams usually adopt a hardware capacity expansion scheme to solve the performance problem of the server side, but the problem cannot be solved fundamentally.
2. Online result set approach using long-keep database connections
the scheme is a mode of processing serial online reading of a cursor query result set, namely, under the condition of keeping the connection of a database for a long time without disconnection, reading a certain amount of data into a memory each time, and continuously traversing until the data is completely read. This approach can occupy the physical resources of the system for a long time.
in summary, in the related art, although the cursor result set can be processed faster, the cache of mass data cannot be processed. Moreover, the caching technology only aims at specific database products, the supported data types are single, and the caching technology does not have universal applicability. In addition, because the cursor query result set is cached in the memory, when the data volume is large, a large amount of memory resources are occupied, and the performance of the system is inevitably reduced. Finally, if the online traversal result set method is used, network connection resources are occupied for a long time, and resource contention and stability reduction may be caused.
Aiming at the problems in the related art, the embodiment of the invention provides a cursor traversal storage method. Referring to fig. 1, the method includes: 101. writing the data segments in the result set into a vernier data set cache, and detecting the data volume in the cache in real time; 102. and if the data volume in the vernier data set cache is larger than a preset threshold value, storing the data segment in the vernier data set cache into a disk file. The preset threshold may be an upper limit set by the system, which is not specifically limited in this embodiment of the present invention.
According to the method provided by the embodiment of the invention, the problem that the data volume of the query result is huge and the cache cannot be stored in the memory is solved by writing the mass data into the disk, and the problem that the network resources occupied for a long time cannot be released when the cursor query result set is traversed is solved. In addition, cache traversal can be performed on the query result sets of various databases.
in addition, when the data volume in the vernier data set cache exceeds the upper limit of the system, the data set in the vernier data set cache is written into the temporary disk file. Similarly, when traversing the data in the result set, reading in the cursor data set cache in sequence according to the data format defined in the metadata. Therefore, the problem that huge data cannot be cached at one time is solved by using the external memory space.
Based on the content of the foregoing embodiment, as an optional embodiment, the embodiment of the present invention does not specifically limit the way of writing the data segments in the result set into the cursor data set cache, and includes but is not limited to: and acquiring the offset of each data segment in the result set when the data segments are stored in the vernier data set cache, and writing each data segment into the vernier data set cache according to the offset corresponding to each data segment.
Based on the content of the foregoing embodiment, as an optional embodiment, the embodiment of the present invention does not specifically limit the manner of the offset when each data segment in the acquisition result set is stored in the cursor data set cache, and the embodiment includes but is not limited to: generating metadata information of a cursor data set according to the metadata information of the result set; and according to the metadata information of the cursor data set, acquiring the offset of each data segment in the result set when the data segment is stored in the cursor data set cache.
Based on the content of the foregoing embodiment, as an optional embodiment, after detecting the size of the data amount in the cache in real time, the method further includes: and if the data amount in the vernier data set cache is not larger than the preset threshold, continuously writing the data segments in the result set into the vernier data set cache.
Based on the content of the above embodiment, as an optional embodiment, the result set is obtained by performing SQL statement query through the JDBC interface. Through direct butt joint with the JDBC interface, the embodiment of the invention can adapt to the data types of various databases, can cache and traverse the query result of the mainstream database in the market, can effectively utilize the storage space, and has better stability and expandability.
Based on the content of the foregoing embodiment, as an optional embodiment, the method further includes: and traversing the data segments stored in the vernier data set cache through a preset interface.
based on the above description of the embodiments, as an alternative embodiment, the preset interface is used to set the cursor to the designated data line. The method comprises the steps that the absolute in a preset interface can set a cursor to a specified row, first can set the cursor to first row data, last can set the cursor to last row data, next can set the cursor to point to a next data row, previous can point the cursor to a previous data row and the like. In addition, the index of the data segment of the cursor data set can refer to fig. 2, the index array of each record corresponding to the data segment can refer to fig. 3, and the data record cache can refer to fig. 4.
based on the content of the above embodiments, an embodiment of the present invention provides a cursor traversal storage device, where the cursor traversal storage device is configured to execute the cursor traversal storage method provided in the above method embodiments.
referring to fig. 5, the apparatus includes:
A first storage module 501, configured to write a data segment in a result set into a cursor data set cache;
a detection module 502, configured to detect the size of the data amount in the cache in real time;
The second storage module 503 is configured to store the data segment in the cursor data set cache into the disk file when the data amount in the cursor data set cache is greater than a preset threshold.
As an alternative embodiment, the first storage module 501 includes:
The acquisition unit is used for acquiring the offset of each data segment in the result set when the data segment is stored in the vernier data set cache;
And the writing unit is used for writing each data segment into the vernier data set cache according to the offset corresponding to each data segment.
as an alternative embodiment, the obtaining unit is configured to generate metadata information of the cursor data set according to the metadata information of the result set; and according to the metadata information of the cursor data set, acquiring the offset of each data segment in the result set when the data segment is stored in the cursor data set cache.
As an alternative embodiment, the apparatus further comprises:
And the writing module is used for continuously writing the data segments in the result set into the vernier data set cache when the data volume in the vernier data set cache is not greater than a preset threshold.
As an alternative embodiment, the result set is obtained by querying SQL statements through a JDBC interface.
As an alternative embodiment, the apparatus further comprises:
and the traversal module is used for traversing the data segments stored in the vernier data set cache through a preset interface.
as an alternative embodiment, the preset interface is used to set the cursor to a specified data row.
The device provided by the embodiment of the invention solves the problem that the data volume of the query result is huge and the cache cannot be stored in the memory by writing mass data into the disk, and solves the problem that the network resources cannot be released after long-time occupation when traversing the vernier query result set. In addition, cache traversal can be performed on the query result sets of various databases.
In addition, when the data volume in the vernier data set cache exceeds the upper limit of the system, the data set in the vernier data set cache is written into the temporary disk file. Similarly, when traversing the data in the result set, reading in the cursor data set cache in sequence according to the data format defined in the metadata. Therefore, the problem that huge data cannot be cached at one time is solved by using the external memory space.
fig. 6 illustrates a physical structure diagram of an electronic device, which may include, as shown in fig. 6: a processor (processor)610, a communication Interface (Communications Interface)620, a memory (memory)630 and a communication bus 640, wherein the processor 610, the communication Interface 620 and the memory 630 communicate with each other via the communication bus 640. The processor 610 may call logic instructions in the memory 630 to perform the following method: writing the data segments in the result set into a vernier data set cache, and detecting the data volume in the cache in real time; and if the data volume in the vernier data set cache is larger than a preset threshold value, storing the data segment in the vernier data set cache into a disk file.
In addition, the logic instructions in the memory 630 may be implemented in software functional units and stored in a computer readable storage medium when the logic instructions are sold or used as independent products. Based on such understanding, the technical solution of the present invention may be embodied in the form of a software product, which is stored in a storage medium and includes instructions for causing a computer device (which may be a personal computer, an electronic device, or a network device) to execute all or part of the steps of the method according to the embodiments of the present invention. And the aforementioned storage medium includes: a U-disk, a removable hard disk, a Read-Only Memory (ROM), a Random Access Memory (RAM), a magnetic disk or an optical disk, and other various media capable of storing program codes.
Embodiments of the present invention further provide a non-transitory computer-readable storage medium, on which a computer program is stored, where the computer program is implemented to perform the method provided in the foregoing embodiments when executed by a processor, and the method includes: writing the data segments in the result set into a vernier data set cache, and detecting the data volume in the cache in real time; and if the data volume in the vernier data set cache is larger than a preset threshold value, storing the data segment in the vernier data set cache into a disk file.
The above-described embodiments of the apparatus are merely illustrative, and the units described as separate parts may or may not be physically separate, and the parts displayed as units may or may not be physical units, may be located in one place, or may be distributed on a plurality of network units. Some or all of the modules may be selected according to actual needs to achieve the purpose of the solution of the present embodiment. One of ordinary skill in the art can understand and implement it without inventive effort.
through the above description of the embodiments, those skilled in the art will clearly understand that each embodiment can be implemented by software plus a necessary general hardware platform, and certainly can also be implemented by hardware. With this understanding in mind, the above-described technical solutions may be embodied in the form of a software product, which can be stored in a computer-readable storage medium such as ROM/RAM, magnetic disk, optical disk, etc., and includes instructions for causing a computer device (which may be a personal computer, a server, or a network device, etc.) to execute the methods described in the embodiments or some parts of the embodiments.
Finally, it should be noted that: the above examples are only intended to illustrate the technical solution of the present invention, but not to limit it; although the present invention has been described in detail with reference to the foregoing embodiments, it will be understood by those of ordinary skill in the art that: the technical solutions described in the foregoing embodiments may still be modified, or some technical features may be equivalently replaced; and such modifications or substitutions do not depart from the spirit and scope of the corresponding technical solutions of the embodiments of the present invention.

Claims (10)

1. A cursor traversal storage method, comprising:
Writing the data segments in the result set into a vernier data set cache, and detecting the data volume in the cache in real time;
And if the data volume in the vernier data set cache is larger than a preset threshold value, storing the data segment in the vernier data set cache into a disk file.
2. The method of claim 1, wherein writing the data segments in the result set to a vernier data set cache comprises:
And acquiring the offset of each data segment in the result set when the data segment is stored in the vernier data set cache, and writing each data segment into the vernier data set cache according to the offset corresponding to each data segment.
3. the method of claim 2, wherein said obtaining an offset for each data segment in the result set when stored in the cursor data set cache comprises:
generating metadata information of a cursor data set according to the metadata information of the result set;
and acquiring the offset of each data segment in the result set when the data segments are stored in the vernier data set cache according to the metadata information of the vernier data set.
4. the method of claim 1, wherein after detecting the size of the data amount in the buffer in real time, the method further comprises:
And if the data volume in the vernier data set cache is not larger than a preset threshold value, continuously writing the data segments in the result set into the vernier data set cache.
5. The method of claim 1, wherein the result set is obtained by querying SQL statements through a JDBC interface.
6. the method of claim 1, further comprising:
And traversing the data segments stored in the cursor data set cache through a preset interface.
7. the method of claim 6, wherein the default interface is used to set a cursor to a specified row of data.
8. A cursor traversal storage device, comprising:
the first storage module is used for writing the data segments in the result set into the vernier data set cache;
The detection module is used for detecting the size of the data volume in the cache in real time;
and the second storage module is used for storing the data segment in the vernier data set cache into a disk file when the data volume in the vernier data set cache is larger than a preset threshold value.
9. an electronic device, comprising:
At least one processor; and
At least one memory communicatively coupled to the processor, wherein:
The memory stores program instructions executable by the processor, the processor invoking the program instructions to perform the method of any of claims 1 to 7.
10. A non-transitory computer-readable storage medium storing computer instructions that cause a computer to perform the method of any one of claims 1 to 7.
CN201910808622.XA 2019-08-29 2019-08-29 cursor traversal storage method and device Pending CN110543495A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910808622.XA CN110543495A (en) 2019-08-29 2019-08-29 cursor traversal storage method and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910808622.XA CN110543495A (en) 2019-08-29 2019-08-29 cursor traversal storage method and device

Publications (1)

Publication Number Publication Date
CN110543495A true CN110543495A (en) 2019-12-06

Family

ID=68710869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910808622.XA Pending CN110543495A (en) 2019-08-29 2019-08-29 cursor traversal storage method and device

Country Status (1)

Country Link
CN (1) CN110543495A (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112416261A (en) * 2020-12-11 2021-02-26 上海中通吉网络技术有限公司 Data storage method, device, equipment and system and storage medium
WO2022002275A1 (en) * 2020-07-03 2022-01-06 中兴通讯股份有限公司 Method for operating distributed storage process, and electronic device and storage medium
WO2022193271A1 (en) * 2021-03-19 2022-09-22 Micron Technology, Inc. Techniques for afragment cursor
WO2022206474A1 (en) * 2021-03-30 2022-10-06 北京字节跳动网络技术有限公司 Data acquisition method and apparatus, electronic device, and computer-readable storage medium

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106020718A (en) * 2016-05-09 2016-10-12 福建联迪商用设备有限公司 A method and a system for improving virtual disk write-in performance
US20170116272A1 (en) * 2015-10-23 2017-04-27 Oracle International Corporation Efficient data retrieval in staged use of in-memory cursor duration temporary tables
CN110008142A (en) * 2019-04-16 2019-07-12 苏州浪潮智能科技有限公司 Storing data management method, device, equipment and computer readable storage medium

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170116272A1 (en) * 2015-10-23 2017-04-27 Oracle International Corporation Efficient data retrieval in staged use of in-memory cursor duration temporary tables
CN106020718A (en) * 2016-05-09 2016-10-12 福建联迪商用设备有限公司 A method and a system for improving virtual disk write-in performance
CN110008142A (en) * 2019-04-16 2019-07-12 苏州浪潮智能科技有限公司 Storing data management method, device, equipment and computer readable storage medium

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022002275A1 (en) * 2020-07-03 2022-01-06 中兴通讯股份有限公司 Method for operating distributed storage process, and electronic device and storage medium
CN112416261A (en) * 2020-12-11 2021-02-26 上海中通吉网络技术有限公司 Data storage method, device, equipment and system and storage medium
WO2022193271A1 (en) * 2021-03-19 2022-09-22 Micron Technology, Inc. Techniques for afragment cursor
WO2022206474A1 (en) * 2021-03-30 2022-10-06 北京字节跳动网络技术有限公司 Data acquisition method and apparatus, electronic device, and computer-readable storage medium

Similar Documents

Publication Publication Date Title
CN110543495A (en) cursor traversal storage method and device
US9678969B2 (en) Metadata updating method and apparatus based on columnar storage in distributed file system, and host
US10331641B2 (en) Hash database configuration method and apparatus
CN110147204B (en) Metadata disk-dropping method, device and system and computer-readable storage medium
CN107704202B (en) Method and device for quickly reading and writing data
US10255234B2 (en) Method for storing data elements in a database
WO2021184761A1 (en) Data access method and apparatus, and data storage method and device
CN107766374B (en) Optimization method and system for storage and reading of massive small files
WO2018036549A1 (en) Distributed database query method and device, and management system
CN105373541A (en) Processing method and system for data operation request of database
CN111324665B (en) Log playback method and device
CN105900093A (en) Keyvalue database data table updating method and data table updating device
CN109614411B (en) Data storage method, device and storage medium
US9275091B2 (en) Database management device and database management method
WO2021238341A1 (en) Method and device for updating data in database, and electronic device
CN113139017A (en) Data synchronization method and device, electronic equipment and storage medium
US20220083522A1 (en) Data processing method, apparatus, electronic device, and computer storage medium
CN111753141A (en) Data management method and related equipment
CN115858471A (en) Service data change recording method, device, computer equipment and medium
WO2022252322A1 (en) Method for synchronizing memory database and relational database of feature tag-based power grid monitoring system
CN114840497A (en) Method, system and device for preprocessing row migration of database and storage medium
CN108984720B (en) Data query method and device based on column storage, server and storage medium
CN110019518B (en) Data processing method and device
CN112527817A (en) Information processing method, information processing apparatus, storage medium, and electronic device
CN112395252A (en) File merging method and device and electronic equipment

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20191206

RJ01 Rejection of invention patent application after publication