Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions packages/shared/lib/api/sqle/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
export { default as OperationRecordService } from './service/OperationRecord';
export { default as ReportPushConfigService } from './service/ReportPushConfig';
export { default as SqlDEVRecordService } from './service/SqlDEVRecord';
export { default as SqlInsightService } from './service/SqlInsight';
export { default as SqlManageService } from './service/SqlManage';
export { default as AiHubService } from './service/ai_hub';
export { default as AuditPlanService } from './service/audit_plan';
export { default as AuditWhitelistService } from './service/audit_whitelist';
Expand All @@ -15,8 +10,13 @@ export { default as InstanceService } from './service/instance';
export { default as InstanceAuditPlanService } from './service/instance_audit_plan';
export { default as KnowledgeBaseService } from './service/knowledge_base';
export { default as OperationService } from './service/operation';
export { default as OperationRecordService } from './service/OperationRecord';
export { default as PipelineService } from './service/pipeline';
export { default as ReportPushConfigService } from './service/ReportPushConfig';
export { default as RuleTemplateService } from './service/rule_template';
export { default as SqlDEVRecordService } from './service/SqlDEVRecord';
export { default as SqlInsightService } from './service/SqlInsight';
export { default as SqlManageService } from './service/SqlManage';
export { default as SqlAnalysisService } from './service/sql_analysis';
export { default as SqlAuditService } from './service/sql_audit';
export { default as SqlAuditRecordService } from './service/sql_audit_record';
Expand Down
3 changes: 3 additions & 0 deletions packages/shared/lib/api/sqle/service/common.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ import {
ModuleRedDotModuleNameEnum,
ObjectDiffResultComparisonResultEnum,
OptimizationRecordStatusEnum,
OptimizationSQLDetailOptimizeStatusEnum,
OptimizationSQLDetailStatusEnum,
RecordSourceNameEnum,
RelatedSQLInfoSourceEnum,
Expand Down Expand Up @@ -2771,6 +2772,8 @@ export interface IOptimizationSQLDetail {

optimize?: IOptimizeDetail;

optimize_status?: OptimizationSQLDetailOptimizeStatusEnum;

optimized_sql_feedbacks?: IOptimizedSQLFeedback[];

origin_query_plan?: IQueryPlan;
Expand Down
16 changes: 15 additions & 1 deletion packages/shared/lib/api/sqle/service/common.enum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -456,14 +456,28 @@ export enum OptimizationRecordStatusEnum {
'finish' = 'finish'
}

export enum OptimizationSQLDetailStatusEnum {
export enum OptimizationSQLDetailOptimizeStatusEnum {
'optimizing' = 'optimizing',

'failed' = 'failed',

'finish' = 'finish'
}

export enum OptimizationSQLDetailStatusEnum {
'rewriting' = 'rewriting',

'rewrite_done' = 'rewrite_done',

'advise_indexing' = 'advise_indexing',

'advise_index_done' = 'advise_index_done',

'finish' = 'finish',

'failed' = 'failed'
}

export enum RecordSourceNameEnum {
'ide_plugin' = 'ide_plugin'
}
Expand Down
53 changes: 29 additions & 24 deletions packages/shared/lib/testUtil/mockApi/sqle/sqlOptimization/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
} from '../../../../api/sqle/service/common';
import {
OptimizationRecordStatusEnum,
OptimizationSQLDetailOptimizeStatusEnum,
OptimizationSQLDetailStatusEnum,
OptimizedSQLFeedbackVoteEnum
} from '../../../../api/sqle/service/common.enum';
Expand All @@ -25,7 +26,8 @@ export const sqlOptimizationRecordsMockData: IOptimizationRecord[] = [
status: OptimizationRecordStatusEnum.finish,
number_of_index: 2,
number_of_rule: 2,
performance_improve: 2.384615385
performance_improve: 2.384615385,
adoption_rate: 85.5
},
{
optimization_id: '1234567',
Expand Down Expand Up @@ -98,8 +100,34 @@ export const optimizationRecordSqlMockData: IOptimizationSQL[] = [
}
];

export const optimizedSQLFeedbacksMockData: IOptimizedSQLFeedback[] = [
{
id: 1,
creator: 'admin',
vote: OptimizedSQLFeedbackVoteEnum.agree,
reason: '优化效果明显',
created_at: '2024-04-17T03:33:09Z'
},
{
id: 2,
creator: 'user1',
vote: OptimizedSQLFeedbackVoteEnum.disagree,
reason: '性能提升不明显',
created_at: '2024-04-16T10:00:00Z'
},
{
id: 3,
creator: 'user2',
vote: OptimizedSQLFeedbackVoteEnum.agree,
created_at: '2024-04-15T08:00:00Z'
}
];

export const optimizationDetailMockData: IOptimizationSQLDetail = {
id: 1,
optimization_id: '1234567',
optimize_status: OptimizationSQLDetailOptimizeStatusEnum.finish,
optimized_sql_feedbacks: optimizedSQLFeedbacksMockData,
status: OptimizationSQLDetailStatusEnum.finish,
status_detail: '',
origin_sql:
Expand Down Expand Up @@ -532,26 +560,3 @@ export const optimizationRecordOverviewMockData: IOptimizationRecordOverview[] =
time: '2024-04-23'
}
];

export const optimizedSQLFeedbacksMockData: IOptimizedSQLFeedback[] = [
{
id: 1,
creator: 'admin',
vote: OptimizedSQLFeedbackVoteEnum.agree,
reason: '优化效果明显',
created_at: '2024-04-17T03:33:09Z'
},
{
id: 2,
creator: 'user1',
vote: OptimizedSQLFeedbackVoteEnum.disagree,
reason: '性能提升不明显',
created_at: '2024-04-16T10:00:00Z'
},
{
id: 3,
creator: 'user2',
vote: OptimizedSQLFeedbackVoteEnum.agree,
created_at: '2024-04-15T08:00:00Z'
}
];
5 changes: 5 additions & 0 deletions packages/sqle/src/locale/en-US/sqlOptimization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,5 +109,10 @@ export default {
beforePlan: 'Execution plan (before optimization)',
afterPlan: 'Execution plan (after optimization)'
}
},
result: {
optimizing: 'Optimization in progress',
moduleGenerating: 'Generating',
moduleFailed: 'Run failed'
}
};
2 changes: 2 additions & 0 deletions packages/sqle/src/locale/zh-CN/sqlOptimization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,8 @@ export default {
fullscreenDisplay: '全屏显示',
drawerTitle: 'AI性能调优结果详情',
optimizing: '优化进行中',
moduleGenerating: '生成中',
moduleFailed: '运行失败',
bestIndexUsedForOriginalSql:
'恭喜,您的原始SQL已使用了最佳索引,暂无进一步的优化!',
bestIndexUsedForOptimizedSql:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ describe('SqlOptimizationResultDrawer', () => {
...defaultOptimizationResult,
getOptimizationResult: getOptimizationResultSpy,
optimizationResult: {
status: OptimizationSQLDetailStatusEnum.optimizing
status: OptimizationSQLDetailStatusEnum.rewriting
}
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ exports[`sqle/SqlOptimizationList render table data 1`] = `
<td
class="ant-table-cell"
>
-
85.5%
</td>
<td
class="ant-table-cell"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ const OptimizationResultModal: React.FC = () => {
<Space direction="vertical">
<ProbabilityDisplay
analysis={currentResultData?.analysis}
optimizationStatus={OptimizationSQLDetailStatusEnum.finish}
optimizationDetailStatus={OptimizationSQLDetailStatusEnum.finish}
/>

<Typography.Title level={5}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ const TableStructureModal: React.FC = () => {

const open = !!modalStatus[ModalName.Sql_Optimization_Table_Structure_Modal];

const hasRecommendedIndexes = !!(
currentTableData?.recommendedIndexes &&
currentTableData.recommendedIndexes.trim()
);

const handleCancel = () => {
dispatch(
updateSqlOptimizationModalStatus({
Expand All @@ -38,7 +43,11 @@ const TableStructureModal: React.FC = () => {

return (
<BasicModal
title={t('sqlOptimization.result.viewTableStructureAndOptimalIndex')}
title={
hasRecommendedIndexes
? t('sqlOptimization.result.viewTableStructureAndOptimalIndex')
: t('sqlOptimization.result.viewTableStructure')
}
open={open}
onCancel={handleCancel}
footer={null}
Expand Down Expand Up @@ -71,24 +80,26 @@ const TableStructureModal: React.FC = () => {
</div>
</div>

<div className="section">
<div className="section-header">
<div className="section-title">
{t('sqlOptimization.result.optimalIndexForQuery')}
<EmptyBox if={hasRecommendedIndexes}>
<div className="section">
<div className="section-header">
<div className="section-title">
{t('sqlOptimization.result.optimalIndexForQuery')}
</div>
<CopyButton
content={currentTableData?.recommendedIndexes}
onlyIcon
/>
</div>
<div className="section-content">
<SQLRenderer
wordWrap
showLineNumbers
sql={currentTableData?.recommendedIndexes}
/>
</div>
<CopyButton
content={currentTableData?.recommendedIndexes}
onlyIcon
/>
</div>
<div className="section-content">
<SQLRenderer
wordWrap
showLineNumbers
sql={currentTableData?.recommendedIndexes}
/>
</div>
</div>
</EmptyBox>
</TableStructureModalWrapper>
</BasicModal>
);
Expand Down
18 changes: 16 additions & 2 deletions packages/sqle/src/page/SqlOptimization/Result/ResultContent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,14 @@ const SqlOptimizationResult: React.FC<SqlOptimizationResultProps> = ({
};
}, [optimizationResult]);

const optimizedPlanModuleState = useMemo(() => {
const steps = optimizationResult?.optimize?.steps;
if (steps?.length) {
return steps[steps.length - 1]?.query_plan?.state;
}
return optimizationResult?.origin_query_plan?.state;
}, [optimizationResult]);

const onViewOverallDiff = () => {
dispatch(
updateDiffModalData({
Expand Down Expand Up @@ -164,11 +172,15 @@ const SqlOptimizationResult: React.FC<SqlOptimizationResultProps> = ({
onViewQueryPlanDiff={onViewQueryPlanDiff}
onExpandQueryPlan={onExpandQueryPlan}
isVerticalLayout={isVerticalLayout}
optimizationStatus={optimizationResult?.status}
optimizationDetailStatus={optimizationResult?.status}
optimizeStatus={optimizationResult?.optimize_status}
isBestPerformance={isBestPerformance}
hasAdvice={optimizationResult?.advised_index?.has_advice}
otherAdvice={optimizationResult?.advised_index?.other_advice}
originalSql={optimizationResult?.origin_sql}
optimizeModuleState={optimizationResult?.optimize?.state}
advisedIndexModuleState={optimizationResult?.advised_index?.state}
optimizedPlanModuleState={optimizedPlanModuleState}
/>

<RightContent
Expand All @@ -177,10 +189,12 @@ const SqlOptimizationResult: React.FC<SqlOptimizationResultProps> = ({
optimizeSteps={optimizationResult?.optimize?.steps ?? []}
errorMessage={errorMessage}
onOptimizationRuleClick={onViewOptimizationResult}
optimizationStatus={optimizationResult?.status}
optimizationDetailStatus={optimizationResult?.status}
optimizationRecordId={optimizationRecordId}
initialFeedbacks={optimizationResult?.optimized_sql_feedbacks ?? []}
onFeedbackChanged={onFeedbackChanged}
analysisModuleState={optimizationResult?.total_analysis?.state}
optimizeModuleState={optimizationResult?.optimize?.state}
/>

<SqlOptimizationModals />
Expand Down
Loading
Loading