Merge pull request #786 from e-mhui/fix-pg-sql-error

#785 fix pg ddl sql error
This commit is contained in:
ji
2023-11-09 21:13:03 +08:00
committed by GitHub
2 changed files with 38 additions and 34 deletions

View File

@ -16,25 +16,20 @@ public class SQLConst {
+ "array_to_string"
+ "(\n"
+ " array(\n"
+ " select ' ' || concat_ws(' ',fieldName, fieldType, fieldLen, indexType, isNullStr, fieldComment"
+ " select ' ' || concat_ws(' ',fieldName, fieldType, defaultValue, isNullStr"
+ " ) as "
+ "column_line\n"
+ " from (\n"
+ " select a.attname as fieldName,format_type(a.atttypid,a.atttypmod) as fieldType,(case when "
+ "atttypmod-4>0 then\n"
+ " atttypmod-4 else 0 end) as fieldLen,\n"
+ " (case when (select count(*) from pg_constraint where conrelid = a.attrelid and conkey[1]=attnum "
+ "and\n"
+ " contype='p')>0 then 'PRI'\n"
+ " when (select count(*) from pg_constraint where conrelid = a.attrelid and conkey[1]=attnum and "
+ "contype='u')>0\n"
+ " then 'UNI'\n"
+ " when (select count(*) from pg_constraint where conrelid = a.attrelid and conkey[1]=attnum and "
+ "contype='f')>0\n"
+ " then 'FRI'\n"
+ " else '' end) as indexType,\n"
+ " (case when a.attnotnull=true then 'not null' else 'null' end) as isNullStr,\n"
+ " ' comment ' || col_description(a.attrelid,a.attnum) as fieldComment\n"
+ " select a.attname as fieldName,format_type(a.atttypid,a.atttypmod) as fieldType,"
+ " CASE WHEN \n"
+ " (SELECT substring(pg_catalog.pg_get_expr(B.adbin, B.adrelid) for 128)\n"
+ " FROM pg_catalog.pg_attrdef B WHERE B.adrelid = A.attrelid AND B.adnum = A.attnum AND A.atthasdef) IS NOT NULL THEN\n"
+ " 'DEFAULT '|| (SELECT substring(pg_catalog.pg_get_expr(B.adbin, B.adrelid) for 128)\n"
+ " FROM pg_catalog.pg_attrdef B WHERE B.adrelid = A.attrelid AND B.adnum = A.attnum AND A.atthasdef)\n"
+ " ELSE\n"
+ " ''\n"
+ " END as defaultValue,"
+ " (case when a.attnotnull=true then 'not null' else 'null' end) as isNullStr\n"
+ " from pg_attribute a where attstattarget=-1 and attrelid = (select c.oid from pg_class c,"
+ "pg_namespace n"
+ " where\n"
@ -114,13 +109,13 @@ public class SQLConst {
+ " -- COMMENT COMMENT ON COLUMN sys_activity.id IS '主键';\n"
+ " tableScript:= tableScript || chr(13)||chr(10) || chr(13)||chr(10) || array_to_string(\n"
+ " array(\n"
+ " SELECT 'COMMENT ON COLUMN' || tablename || '.' || a.attname ||' IS '|| ''''|| d.description "
+ " SELECT 'COMMENT ON COLUMN ' || 'namespace.tablename' || '.' || a.attname ||' IS '|| ''''|| d.description "
+ "||''''\n"
+ " FROM pg_class c\n"
+ " JOIN pg_description d ON c.oid=d.objoid\n"
+ " JOIN pg_attribute a ON c.oid = a.attrelid\n"
+ " WHERE c.relname=tablename\n"
+ " AND a.attnum = d.objsubid),','|| chr(13)||chr(10)) ;\n"
+ " AND a.attnum = d.objsubid),';'|| chr(13)||chr(10)) ;\n"
+ "\n"
+ " return tableScript;\n"
+ "\n"