import type { VendorSqlFunction } from '../types'; /** Logical/structural keywords used in the search segment of every vendor. */ export const SHARED_SEARCH_KEYWORDS = ['AND', 'OR', 'NOT', 'TO', 'IN']; /** * Core SQL keywords that are valid in the analyze segment for all five vendors. * Vendor-specific extensions (e.g. APPROX_DISTINCT, MATCHES) are added per file. */ export const SHARED_SQL_KEYWORDS = [ 'SELECT', 'FROM', 'WHERE', 'AND', 'OR', 'NOT', 'IN', 'IS', 'NULL', 'TRUE', 'FALSE', 'AS', 'DISTINCT', 'BETWEEN', 'LIKE', 'CASE', 'WHEN', 'THEN', 'ELSE', 'END', 'CAST', 'GROUP', 'BY', 'HAVING', 'ORDER', 'ASC', 'DESC', 'LIMIT', 'OFFSET', 'UNION', 'ALL', 'WITH', 'JOIN', 'LEFT', 'RIGHT', 'INNER', 'OUTER', 'ON', ]; /** Aggregations available in every vendor's SQL dialect. */ export const SHARED_SQL_AGGREGATES: VendorSqlFunction[] = [ { name: 'COUNT', signature: 'COUNT(expression)', doc: '返回行数' }, { name: 'SUM', signature: 'SUM(expression)', doc: '返回数值之和' }, { name: 'AVG', signature: 'AVG(expression)', doc: '返回数值的平均值' }, { name: 'MIN', signature: 'MIN(expression)', doc: '返回最小值' }, { name: 'MAX', signature: 'MAX(expression)', doc: '返回最大值' }, ]; /** Common scalar functions implemented by every vendor's SQL engine. */ export const SHARED_SQL_SCALARS: VendorSqlFunction[] = [ { name: 'UPPER', signature: 'UPPER(string)', doc: '转大写' }, { name: 'LOWER', signature: 'LOWER(string)', doc: '转小写' }, { name: 'LENGTH', signature: 'LENGTH(string)', doc: '字符串长度' }, { name: 'SUBSTRING', signature: 'SUBSTRING(string, start, length)', doc: '截取子串' }, { name: 'TRIM', signature: 'TRIM(string)', doc: '去除首尾空白' }, { name: 'CONCAT', signature: 'CONCAT(s1, s2, ...)', doc: '拼接字符串' }, { name: 'ROUND', signature: 'ROUND(number[, decimals])', doc: '四舍五入' }, { name: 'ABS', signature: 'ABS(number)', doc: '绝对值' }, { name: 'COALESCE', signature: 'COALESCE(v1, v2, ...)', doc: '返回第一个非 NULL 值' }, { name: 'NOW', signature: 'NOW()', doc: '当前时间' }, { name: 'DATE_FORMAT', signature: "DATE_FORMAT(time, format)", doc: '时间格式化' }, ];