Почему dbicdump сокращает имя столбца таблицы в ResultSource, когда оно достигает 30 символов? - PullRequest
1 голос
/ 12 марта 2019

Я сбросил схему базы данных MSSQL, используя dbicdump:

dbicdump \
    -o dump_directory=./lib \
    -o components='["InflateColumn::DateTime"]' \
    -o constraint='qr/(V_A_Table_With_A_Very_Long_Name)/i' \
    -o preserve-case=1 \
    My::Package dbi:ODBC:dsn=ODBC_Conf my_username 'secret'

Схема сгенерирована правильно, ошибок и предупреждений не было.Хотя одно из имен столбцов в базе данных называется Code_Tranche_Unite_Urbaine_XXXY, но в соответствующем ResultSource я получил Code_Tranche_Unite_Urbaine_XXX (без Y в конце):

package My::Schema::Result::VATableWithAVeryLongName;
#...
__PACKAGE__->table("V_A_Table_With_A_Very_Long_Name");
#...
__PACKAGE__->add_columns(
  #...
  # Should be 'Code_Tranche_Unite_Urbaine_XXXY'
  "Code_Tranche_Unite_Urbaine_XXX",
  {
    accessor    => "code_tranche_unite_urbaine_XXX", # No 'Y' here
    data_type   => "integer",
    is_nullable => 1,
  },
  #...
);

Я сохранил сгенерированный ResultSource как есть, не редактировал его.Похоже, DBIx::Class::Schema::Loader сокращает имя столбца до 30 символов.Это предположение, потому что мне не удалось найти какую-либо документацию по этому поводу.

Если это могло что-то изменить, V_A_Table_With_A_Very_Long_Name - это представление MSSQL, доступ к которому осуществляется через ODBC.

Янемного любопытно, почему dbicdump ведет себя так: я могу сказать, что это потому, что 30 символов действительно слишком длинны , но дело в том, что у вас не всегда есть возможность изменитьсясхема таблицы.

Ожидается ли такое поведение, и если да, то почему это так?Может ли это быть ошибкой?Есть ли способ контролировать это?

Версии: DBIx::Class::Schema::Loader и dbicdump происходят из одной и той же DBIx::Class::Schema::Loader установки, 0.07049

...