@@ -326,6 +326,9 @@ void output_flex_t::write_row(flex_table_t *table, osmium::item_type id_type,
326326 auto *copy_mgr = table->copy_mgr ();
327327
328328 for (auto const &column : *table) {
329+ if (column.create_only ()) {
330+ continue ;
331+ }
329332 if (column.type () == table_column_type::id_type) {
330333 copy_mgr->add_column (type_to_char (id_type));
331334 } else if (column.type () == table_column_type::id_num) {
@@ -509,7 +512,7 @@ void output_flex_t::setup_id_columns(flex_table_t *table)
509512 }
510513 lua_pop (lua_state (), 1 ); // type_column
511514 auto &column = table->add_column (type_column_name, " id_type" );
512- column.set_not_null_constraint ();
515+ column.set_not_null ();
513516 table->set_id_type (osmium::item_type::undefined);
514517 } else {
515518 throw std::runtime_error{" Unknown ids type: " + type};
@@ -520,7 +523,7 @@ void output_flex_t::setup_id_columns(flex_table_t *table)
520523 check_name (name, " column" );
521524
522525 auto &column = table->add_column (name, " id_num" );
523- column.set_not_null_constraint ();
526+ column.set_not_null ();
524527 lua_pop (lua_state (), 3 ); // id_column, type, ids
525528}
526529
@@ -551,9 +554,15 @@ void output_flex_t::setup_flex_table_columns(flex_table_t *table)
551554 luaX_get_table_string (lua_state (), " column" , -2 , " Column entry" );
552555 check_name (name, " column" );
553556
554- table->add_column (name, type);
557+ auto &column = table->add_column (name, type);
558+
559+ column.set_not_null (luaX_get_table_bool (lua_state (), " not_null" , -3 ,
560+ " Entry 'not_null'" , false ));
561+
562+ column.set_create_only (luaX_get_table_bool (
563+ lua_state (), " create_only" , -4 , " Entry 'create_only'" , false ));
555564
556- lua_pop (lua_state (), 3 ); // column, type, table
565+ lua_pop (lua_state (), 5 ); // create_only, not_null, column, type, table
557566 ++num_columns;
558567 }
559568
@@ -670,6 +679,8 @@ int output_flex_t::table_columns()
670679 column.sql_type_name (table.srid ()).c_str ());
671680 luaX_add_table_str (lua_state (), " sql_modifiers" ,
672681 column.sql_modifiers ().c_str ());
682+ luaX_add_table_bool (lua_state (), " not_null" , column.not_null ());
683+ luaX_add_table_bool (lua_state (), " create_only" , column.create_only ());
673684
674685 lua_rawset (lua_state (), -3 );
675686 }
0 commit comments