Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sub enum_values {
- my ( $self, $schema, $table, $column ) = @_;
- # don't eval to let the error bubble up
- my $columns = $schema->storage->dbh->selectrow_hashref(
- "SHOW COLUMNS FROM `$table` like ?",
- {},
- $column
- );
- unless ($columns) {
- X::Internal::Database::UnknownColumn->throw(
- column => $column,
- table => $table,
- );
- }
- my $type = $columns->{Type} or X::Panic->throw(
- details => "Could not determine type for $table.$column",
- );
- unless ( $type =~ /Aenum((.*))z/ ) {
- X::Internal::Database::IncorrectTypeForColumn->throw(
- type_wanted => 'enum',
- type_found => $type,
- );
- }
- $type = $1;
- require Text::CSV_XS;
- my $csv = Text::CSV_XS->new;
- $csv->parse($type) or X::Panic->throw(
- details => "Could not parse enum CSV data: ".$csv->error_input,
- );
- return map { /A'(.*)'z/; $1 }$csv->fields;
- }
- my $sth = $dbh->column_info(undef, undef, 'mytable', '%');
- foreach my $col_info ($sth->fetchrow_hashref)
- {
- if($col_info->{'TYPE_NAME'} eq 'ENUM')
- {
- # The mysql_values key contains a reference to an array of valid enum values
- print "Valid enum values for $col_info->{'COLUMN_NAME'}: ",
- join(', ', @{$col_info->{'mysql_values'}}), "n";
- }
- ...
- }
- my @fields = $type =~ / ' ([^']+) ' (?:,|z) /msgx;
Add Comment
Please, Sign In to add comment