fix(kingbase): use connection identifier quotes in MySQL mode
This commit is contained in:
parent
e226a5670e
commit
36d8fabc8f
|
|
@ -855,6 +855,7 @@ async function loadServerFilterValues(columnIndex: number, searchValue: string)
|
|||
const columnInfo = tableMeta.columns.find((column) => column.name === columnName);
|
||||
const sql = await buildDataGridColumnDistinctValuesSql({
|
||||
databaseType: resolvedDatabaseType.value,
|
||||
identifierQuote: connectionStore.connectionIdentifierQuote?.(props.connectionId),
|
||||
catalog: tableMeta.catalog,
|
||||
database: tableMeta.database,
|
||||
schema: tableMeta.schema,
|
||||
|
|
@ -1179,6 +1180,7 @@ async function applyServerColumnFilter(draft: LocalColumnFilterDraft) {
|
|||
}
|
||||
const condition = await buildColumnValuesFilterCondition({
|
||||
databaseType: resolvedDatabaseType.value,
|
||||
identifierQuote: connectionStore.connectionIdentifierQuote?.(props.connectionId),
|
||||
columnName,
|
||||
columnInfo: props.tableMeta?.columns.find((column) => column.name === columnName),
|
||||
values,
|
||||
|
|
@ -1209,6 +1211,7 @@ async function applyTypedLocalFilterValue() {
|
|||
const columnInfo = props.tableMeta?.columns.find((column) => column.name === columnName);
|
||||
const condition = await buildColumnValueFilterCondition({
|
||||
databaseType: resolvedDatabaseType.value,
|
||||
identifierQuote: connectionStore.connectionIdentifierQuote?.(props.connectionId),
|
||||
columnName,
|
||||
columnInfo,
|
||||
rawValue: localFilterTypedValue.value,
|
||||
|
|
@ -1301,6 +1304,7 @@ async function buildStructuredWhereFromRules(rules: StructuredFilterRule[]): Pro
|
|||
condition:
|
||||
(await buildDataGridContextFilterCondition({
|
||||
databaseType: resolvedDatabaseType.value,
|
||||
identifierQuote: connectionStore.connectionIdentifierQuote?.(props.connectionId),
|
||||
columnName: rule.columnName,
|
||||
columnInfo,
|
||||
mode: rule.mode,
|
||||
|
|
@ -3682,6 +3686,7 @@ async function prefetchDetailSqlCondition() {
|
|||
try {
|
||||
const condition = await buildDataGridContextFilterCondition({
|
||||
databaseType: resolvedDatabaseType.value,
|
||||
identifierQuote: connectionStore.connectionIdentifierQuote?.(props.connectionId),
|
||||
columnName: detail.column,
|
||||
columnInfo: props.tableMeta?.columns.find((column) => column.name === detail.column),
|
||||
mode: "equals",
|
||||
|
|
@ -3977,6 +3982,7 @@ async function contextFilterCondition(mode: FilterMode): Promise<string | null>
|
|||
return (
|
||||
(await buildDataGridContextFilterCondition({
|
||||
databaseType: resolvedDatabaseType.value,
|
||||
identifierQuote: connectionStore.connectionIdentifierQuote?.(props.connectionId),
|
||||
columnName: contextColumn.value,
|
||||
columnInfo: props.tableMeta?.columns.find((column) => column.name === contextColumn.value),
|
||||
mode,
|
||||
|
|
|
|||
|
|
@ -1088,6 +1088,7 @@ export function useDataGridEditor(options: UseDataGridEditorOptions) {
|
|||
if (!tableMeta.value) return null;
|
||||
return {
|
||||
databaseType: resolvedDatabaseType.value,
|
||||
identifierQuote: connectionStore.connectionIdentifierQuote?.(connectionId.value),
|
||||
tableMeta: tableMeta.value,
|
||||
columns: result.value.columns,
|
||||
sourceColumns: sourceColumns.value,
|
||||
|
|
|
|||
|
|
@ -3,9 +3,10 @@ import type { DataGridColumnInfo, DataGridContextFilterMode, GridCellValue } fro
|
|||
import { buildDataGridColumnValueFilterCondition, buildDataGridColumnValuesFilterCondition } from "@/lib/dataGrid/dataGridSql";
|
||||
import { normalizeWhereInput } from "@/lib/table/tableSelectSql";
|
||||
|
||||
export function buildColumnValueFilterCondition(options: { databaseType?: DatabaseType; columnName: string; columnInfo?: Pick<ColumnInfo, "data_type">; rawValue: string }): Promise<string | undefined> {
|
||||
export function buildColumnValueFilterCondition(options: { databaseType?: DatabaseType; identifierQuote?: string; columnName: string; columnInfo?: Pick<ColumnInfo, "data_type">; rawValue: string }): Promise<string | undefined> {
|
||||
return buildDataGridColumnValueFilterCondition({
|
||||
databaseType: options.databaseType,
|
||||
identifierQuote: options.identifierQuote,
|
||||
columnName: options.columnName,
|
||||
columnInfo: options.columnInfo
|
||||
? {
|
||||
|
|
@ -18,9 +19,10 @@ export function buildColumnValueFilterCondition(options: { databaseType?: Databa
|
|||
});
|
||||
}
|
||||
|
||||
export function buildColumnValuesFilterCondition(options: { databaseType?: DatabaseType; columnName: string; columnInfo?: Pick<ColumnInfo, "data_type">; values: GridCellValue[] }): Promise<string | undefined> {
|
||||
export function buildColumnValuesFilterCondition(options: { databaseType?: DatabaseType; identifierQuote?: string; columnName: string; columnInfo?: Pick<ColumnInfo, "data_type">; values: GridCellValue[] }): Promise<string | undefined> {
|
||||
return buildDataGridColumnValuesFilterCondition({
|
||||
databaseType: options.databaseType,
|
||||
identifierQuote: options.identifierQuote,
|
||||
columnName: options.columnName,
|
||||
columnInfo: options.columnInfo
|
||||
? {
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ export interface DataGridColumnInfo {
|
|||
|
||||
export interface DataGridSaveStatementOptions {
|
||||
databaseType?: DatabaseType;
|
||||
identifierQuote?: string;
|
||||
tableMeta: DataGridTableMeta;
|
||||
columns: string[];
|
||||
sourceColumns?: Array<string | undefined>;
|
||||
|
|
@ -57,6 +58,7 @@ export type DataGridContextFilterMode = "equals" | "not-equals" | "is-null" | "i
|
|||
|
||||
export interface DataGridContextFilterConditionOptions {
|
||||
databaseType?: DatabaseType;
|
||||
identifierQuote?: string;
|
||||
columnName: string;
|
||||
mode: DataGridContextFilterMode;
|
||||
value: GridCellValue;
|
||||
|
|
@ -67,6 +69,7 @@ export interface DataGridContextFilterConditionOptions {
|
|||
|
||||
export interface DataGridColumnValueFilterConditionOptions {
|
||||
databaseType?: DatabaseType;
|
||||
identifierQuote?: string;
|
||||
columnName: string;
|
||||
columnInfo?: DataGridColumnInfo;
|
||||
rawValue: string;
|
||||
|
|
@ -74,6 +77,7 @@ export interface DataGridColumnValueFilterConditionOptions {
|
|||
|
||||
export interface DataGridColumnValuesFilterConditionOptions {
|
||||
databaseType?: DatabaseType;
|
||||
identifierQuote?: string;
|
||||
columnName: string;
|
||||
columnInfo?: DataGridColumnInfo;
|
||||
values: GridCellValue[];
|
||||
|
|
@ -81,6 +85,7 @@ export interface DataGridColumnValuesFilterConditionOptions {
|
|||
|
||||
export interface DataGridColumnDistinctValuesSqlOptions {
|
||||
databaseType?: DatabaseType;
|
||||
identifierQuote?: string;
|
||||
catalog?: string;
|
||||
database?: string;
|
||||
schema?: string;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -188,6 +188,7 @@ fn build_tdengine_delete_statement(
|
|||
save_columns,
|
||||
row,
|
||||
options.table_meta.columns.as_deref().unwrap_or(&[]),
|
||||
None,
|
||||
);
|
||||
if where_clause.is_empty() {
|
||||
return None;
|
||||
|
|
|
|||
|
|
@ -14,6 +14,6 @@ pub use identifiers::{
|
|||
normalize_where_input, qualified_table_name, qualified_table_name_with_catalog, quote_table_identifier,
|
||||
};
|
||||
pub(crate) use identifiers::{parse_sqlserver_linked_schema_ref, qualified_transfer_table, quote_transfer_identifier};
|
||||
pub(crate) use table_select::table_data_qualified_table_name;
|
||||
pub use table_select::{build_count_table_sql, build_table_data_select_sql, build_table_select_sql};
|
||||
pub(crate) use table_select::{quote_table_data_identifier, table_data_qualified_table_name};
|
||||
pub use types::*;
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ pub(crate) fn table_data_qualified_table_name(
|
|||
.unwrap_or(table)
|
||||
}
|
||||
|
||||
fn quote_table_data_identifier(
|
||||
pub(crate) fn quote_table_data_identifier(
|
||||
database_type: Option<DatabaseType>,
|
||||
name: &str,
|
||||
identifier_quote: Option<&str>,
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ fn mysql_cross_database_query_flow_preserves_target_database() {
|
|||
|
||||
let save = prepare_data_grid_save(DataGridSaveStatementOptions {
|
||||
database_type: Some(DatabaseType::Mysql),
|
||||
identifier_quote: None,
|
||||
table_meta: DataGridTableMeta {
|
||||
catalog: None,
|
||||
database: None,
|
||||
|
|
|
|||
|
|
@ -178,3 +178,22 @@ test("passes list and range values through the shared context filter API", async
|
|||
endValue: 20,
|
||||
});
|
||||
});
|
||||
|
||||
test("passes the connection identifier quote to Kingbase filters", async () => {
|
||||
installFilterFetchMock();
|
||||
await buildDataGridContextFilterCondition({
|
||||
databaseType: "kingbase",
|
||||
identifierQuote: "`",
|
||||
columnName: "file_name",
|
||||
mode: "equals",
|
||||
value: "34-B-0048",
|
||||
});
|
||||
|
||||
assert.deepEqual(lastContextFilterOptions, {
|
||||
databaseType: "kingbase",
|
||||
identifierQuote: "`",
|
||||
columnName: "file_name",
|
||||
mode: "equals",
|
||||
value: "34-B-0048",
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue