Fix issue with missing new added records in download file. #5345

This commit is contained in:
Rohit Bhati 2024-07-02 11:48:13 +05:30 committed by GitHub
parent 576dc55615
commit 22cdb86aab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 45 additions and 9 deletions

View File

@ -2098,7 +2098,21 @@ def start_query_download_tool(trans_id):
)
try:
sql = None
query_commited = data.get('query_commited', False)
# Iterate through CombinedMultiDict to find query.
for key, value in data.items():
if key == 'query':
sql = value
if key == 'query_commited':
query_commited = (
eval(value) if isinstance(value, str) else value
)
if not sql:
sql = trans_obj.get_sql(sync_conn)
if query_commited:
# Re-execute the query to ensure the latest data is included
sync_conn.execute_async(sql)
# This returns generator of records.
status, gen, conn_obj = \
sync_conn.execute_on_server_as_csv(records=10)

View File

@ -47,6 +47,7 @@ export class ResultSetUtils {
this.isQueryTool = isQueryTool;
this.clientPKLastIndex = 0;
this.historyQuerySource = null;
this.hasQueryCommitted = false;
}
static generateURLReconnectionFlag(baseUrl, transId, shouldReconnect) {
@ -385,7 +386,17 @@ export class ResultSetUtils {
'trans_id': this.transId
}),
JSON.stringify(reqData)
);
).then(response => {
if (response.data?.data?.status) {
// Set the commit flag to true if the save was successful
this.hasQueryCommitted = true;
}
return response;
}).catch((error) => {
// Set the commit flag to false if there was an error
this.hasQueryCommitted = false;
throw error;
});
}
async saveResultsToFile(fileName) {
@ -394,7 +405,7 @@ export class ResultSetUtils {
url_for('sqleditor.query_tool_download', {
'trans_id': this.transId,
}),
{filename: fileName}
{filename: fileName, query_commited: this.hasQueryCommitted}
);
if(!_.isUndefined(respData.data)) {
@ -402,6 +413,7 @@ export class ResultSetUtils {
this.eventBus.fireEvent(QUERY_TOOL_EVENTS.SET_MESSAGE, respData.data.result);
}
} else {
this.hasQueryCommitted = false;
let respBlob = new Blob([respData], {type : 'text/csv'}),
urlCreator = window.URL || window.webkitURL,
download_url = urlCreator.createObjectURL(respBlob),

View File

@ -37,7 +37,8 @@ class TestDownloadCSV(BaseTestGenerator):
is_valid_tx=True,
is_valid=True,
download_as_txt=False,
filename='test.csv'
filename='test.csv',
query_commited=True
)
),
(
@ -51,7 +52,8 @@ class TestDownloadCSV(BaseTestGenerator):
is_valid_tx=False,
is_valid=False,
download_as_txt=False,
filename='test.csv'
filename='test.csv',
query_commited=False
)
),
(
@ -65,7 +67,8 @@ class TestDownloadCSV(BaseTestGenerator):
is_valid_tx=True,
is_valid=False,
download_as_txt=False,
filename='test.csv'
filename='test.csv',
query_commited=False
)
),
(
@ -79,7 +82,8 @@ class TestDownloadCSV(BaseTestGenerator):
is_valid_tx=True,
is_valid=True,
download_as_txt=True,
filename=None
filename=None,
query_commited=False
)
),
(
@ -93,7 +97,8 @@ class TestDownloadCSV(BaseTestGenerator):
is_valid_tx=True,
is_valid=True,
download_as_txt=False,
filename=None
filename=None,
query_commited=False
)
),
]
@ -184,9 +189,14 @@ class TestDownloadCSV(BaseTestGenerator):
headers['Content-Disposition'])
else:
data = {
"query": self.sql,
"filename": self.filename,
"query_commited": self.query_commited
}
response = self.tester.post(
url,
data={"query": self.sql, "filename": self.filename}
data=data
)
headers = dict(response.headers)
# Enable the console logging from Flask logger