版本与环境
- 受影响提交:
2ef0ac0(当前代码生成分析分支)
- 运行时:Windows,Python 3.10+,MCP
db_table_describe
- 数据库:PostgreSQL 12+;无需凭据即可用固定类型字符串复现
- 安装方式:仓库
.venv / PYTHONPATH=src
问题与预期行为
db_table_describe(include_java_types=true) 使用 mcp_tools._get_java_type_mapping() 解析 PostgreSQL format_type() 返回的完整类型名。配置只覆盖了 TIME、TIMESTAMP 和 TIMESTAMP_WITH_TIME_ZONE,未覆盖 TIME WITHOUT TIME ZONE、TIMESTAMP WITHOUT TIME ZONE 与 TIMESTAMPTZ 这些合法的 PostgreSQL 类型别名,因此 MCP 返回 java_type=Object 且缺少标准库 import。生成器的 PostgreSQLDialect 已能正确映射同一输入,导致 MCP 描述与代码生成上下文不一致。
预期结果:三种别名分别映射为 LocalTime、LocalDateTime、OffsetDateTime,并返回对应 java.time import。
最小复现
PYTHONPATH=src python -c "from dbjavagenix.core.models import DatabaseType; from dbjavagenix.database.mcp_tools import _get_java_type_mapping; print(_get_java_type_mapping(DatabaseType.POSTGRESQL, 'timestamp without time zone')); print(_get_java_type_mapping(DatabaseType.POSTGRESQL, 'timestamptz'))"
修复前输出包含 {'java_type': 'Object', 'imports': []}。
验收标准
非目标、风险与安全
本 Issue 不重写 MCP 映射架构、不调整 DialectAdapter 的 UUID 语义、不连接真实数据库,也不涉及凭据、SQL 或数据迁移。风险仅为配置别名补齐后返回更准确的 Java 类型;可通过回滚关联提交恢复旧行为。
版本与环境
2ef0ac0(当前代码生成分析分支)db_table_describe.venv/PYTHONPATH=src问题与预期行为
db_table_describe(include_java_types=true)使用mcp_tools._get_java_type_mapping()解析 PostgreSQLformat_type()返回的完整类型名。配置只覆盖了TIME、TIMESTAMP和TIMESTAMP_WITH_TIME_ZONE,未覆盖TIME WITHOUT TIME ZONE、TIMESTAMP WITHOUT TIME ZONE与TIMESTAMPTZ这些合法的 PostgreSQL 类型别名,因此 MCP 返回java_type=Object且缺少标准库 import。生成器的PostgreSQLDialect已能正确映射同一输入,导致 MCP 描述与代码生成上下文不一致。预期结果:三种别名分别映射为
LocalTime、LocalDateTime、OffsetDateTime,并返回对应java.timeimport。最小复现
修复前输出包含
{'java_type': 'Object', 'imports': []}。验收标准
TIME WITHOUT TIME ZONE返回LocalTime与java.time.LocalTime。TIMESTAMP WITHOUT TIME ZONE返回LocalDateTime与java.time.LocalDateTime。TIMESTAMPTZ返回OffsetDateTime与java.time.OffsetDateTime。UUID、JSONB和完整时区类型映射保持不变。非目标、风险与安全
本 Issue 不重写 MCP 映射架构、不调整
DialectAdapter的 UUID 语义、不连接真实数据库,也不涉及凭据、SQL 或数据迁移。风险仅为配置别名补齐后返回更准确的 Java 类型;可通过回滚关联提交恢复旧行为。