{
  "scenarios": [
    {
      "type": "create",
      "name": "Create Table for testing column node (Ver.default)",
      "endpoint": "NODE-table.obj",
      "sql_endpoint": "NODE-table.sql_id",
      "data": {
        "name": "table_1_$%{}[]()&*^!@\"'`\\/#",
        "is_partitioned": false,
        "columns": [],
        "schema": "testschema"
      },
      "store_object_id": true
    },
    {
      "type": "create",
      "name": "Create Column (Integer/Numeric type)",
      "endpoint": "NODE-column.obj",
      "sql_endpoint": "NODE-column.sql_id",
      "msql_endpoint": "NODE-column.msql",
      "data": {
        "name": "col_1_$%{}[]()&*^!@\"'`\\/#",
        "description": "Comment for create",
        "cltype":"bigint",
        "attacl":[],
        "is_primary_key":false,
        "attnotnull":true,
        "attlen":null,
        "attprecision":null,
        "attoptions":[],
        "seclabels":[],
        "defval":"1"
      },
      "expected_sql_file": "create_column_int.sql",
      "expected_msql_file": "create_column_int.msql"
    },
    {
      "type": "alter",
      "name": "Alter Column (Integer/Numeric type)",
      "endpoint": "NODE-column.obj_id",
      "sql_endpoint": "NODE-column.sql_id",
      "msql_endpoint": "NODE-column.msql_id",
      "data": {
        "attnum": 1,
        "name": "new_col_1_$%{}[]()&*^!@\"'`\\/#",
        "description": "Comment for alter",
        "cltype":"real",
        "attacl":{"added":[{"grantee":"PUBLIC","grantor":"postgres","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false}]}]}
      },
      "expected_sql_file": "alter_column_int.sql",
      "expected_msql_file": "alter_column_int.msql"
    },
    {
      "type": "delete",
      "name": "Drop Column (Integer/Numeric type)",
      "endpoint": "NODE-column.obj_id",
      "sql_endpoint": "NODE-column.sql_id",
      "data": {
        "name": "new_col_1_$%{}[]()&*^!@\"'`\\/#"
      }
    },
    {
      "type": "create",
      "name": "Create Column (Character type)",
      "endpoint": "NODE-column.obj",
      "sql_endpoint": "NODE-column.sql_id",
      "msql_endpoint": "NODE-column.msql",
      "data": {
        "name": "col_2_$%{}[]()&*^!@\"'`\\/#",
        "description": "Comment for create",
        "cltype":"character varying",
        "collspcname": "pg_catalog.\"C\"",
        "attacl":[],
        "is_primary_key":false,
        "attnotnull":false,
        "attlen":"50",
        "attprecision":null,
        "attoptions":[],
        "seclabels":[],
        "defval":null
      },
      "expected_sql_file": "create_column_char.sql",
      "expected_msql_file": "create_column_char.msql"
    },
    {
      "type": "alter",
      "name": "Alter Column (Character type)",
      "endpoint": "NODE-column.obj_id",
      "sql_endpoint": "NODE-column.sql_id",
      "msql_endpoint": "NODE-column.msql_id",
      "data": {
        "attnum": 2,
        "name": "new_col_2_$%{}[]()&*^!@\"'`\\/#",
        "attlen": null,
        "attstattarget": "5",
        "attstorage": "p",
        "description": "Comment for alter",
        "cltype":"character",
        "attacl":{"added":[{"grantee":"PUBLIC","grantor":"postgres","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false}]}]}
      },
      "expected_sql_file": "alter_column_char.sql",
      "expected_msql_file": "alter_column_char.msql"
    },
    {
      "type": "delete",
      "name": "Drop Column (Character type)",
      "endpoint": "NODE-column.obj_id",
      "sql_endpoint": "NODE-column.sql_id",
      "data": {
        "name": "new_col_2_$%{}[]()&*^!@\"'`\\/#"
      }
    },

    {
      "type": "create",
      "name": "Create Column (Numeric type with Length Precision & Variables)",
      "endpoint": "NODE-column.obj",
      "sql_endpoint": "NODE-column.sql_id",
      "msql_endpoint": "NODE-column.msql",
      "data": {
        "name": "col_3_$%{}[]()&*^!@\"'`\\/#",
        "description": "Comment for create",
        "min_val":0,
        "max_val":1000,
        "cltype":"numeric",
        "attacl":[],
        "is_primary_key":false,
        "attnotnull":true,
        "attlen":"10",
        "attprecision":"5",
        "attidentity":"a",
        "attoptions":[{"name":"n_distinct","value":"1"}],
        "seclabels":[]
      },
      "expected_sql_file": "create_column_numeric.sql",
      "expected_msql_file": "create_column_numeric.msql"
    },
    {
      "type": "alter",
      "name": "Alter Column (Numeric type with Length Precision & Variables)",
      "endpoint": "NODE-column.obj_id",
      "sql_endpoint": "NODE-column.sql_id",
      "msql_endpoint": "NODE-column.msql_id",
      "data": {
        "name": "new_col_3_$%{}[]()&*^!@\"'`\\/#",
        "attnum": 3,
        "attlen":"15",
        "attprecision":"6",
        "description": "Comment for alter",
        "attacl":{"added":[{"grantee":"PUBLIC","grantor":"postgres","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false}]}]}
      },
      "expected_sql_file": "alter_column_numeric.sql",
      "expected_msql_file": "alter_column_numeric.msql"
    },
    {
      "type": "alter",
      "name": "Alter Column (Remove Length)",
      "endpoint": "NODE-column.obj_id",
      "sql_endpoint": "NODE-column.sql_id",
      "msql_endpoint": "NODE-column.msql_id",
      "data": {
        "attnum": 3,
        "attlen":""
      },
      "expected_sql_file": "alter_column_remove_length.sql",
      "expected_msql_file": "alter_column_remove_length.msql"
    },
    {
      "type": "delete",
      "name": "Drop Column (Numeric type with Length Precision & Variables)",
      "endpoint": "NODE-column.obj_id",
      "sql_endpoint": "NODE-column.sql_id",
      "data": {
        "name": "new_col_3_$%{}[]()&*^!@\"'`\\/#"
      }
    }
  ]
}
