From abc241d7114e3fdf8a2336aef96e290ec6b59a75 Mon Sep 17 00:00:00 2001 From: Kenichi Ishigaki Date: Sat, 26 Feb 2022 11:20:41 +0900 Subject: [PATCH] Lowercase datatype --- dbdimp.c | 17 ++++++++++++++++- t/51_table_column_metadata.t | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/dbdimp.c b/dbdimp.c index 16c244a..95232b7 100644 --- a/dbdimp.c +++ b/dbdimp.c @@ -1928,6 +1928,21 @@ sqlite_db_load_extension(pTHX_ SV *dbh, const char *file, const char *proc) #endif +SV* _lc(SV* sv) { + int i, l; + char* pv; + if (SvPOK(sv)) { + pv = SvPV_nolen(sv); + l = strlen(pv); + for(i = 0; i < l; i++) { + if (pv[i] >= 'A' && pv[i] <= 'Z') { + pv[i] = pv[i] - 'A' + 'a'; + } + } + } + return sv; +} + HV* sqlite_db_table_column_metadata(pTHX_ SV *dbh, SV *dbname, SV *tablename, SV *columnname) { @@ -1964,7 +1979,7 @@ sqlite_db_table_column_metadata(pTHX_ SV *dbh, SV *dbname, SV *tablename, SV *co #endif if (rc == SQLITE_OK) { - hv_stores(metadata, "data_type", datatype ? newSVpv(datatype, 0) : newSV(0)); + hv_stores(metadata, "data_type", datatype ? _lc(newSVpv(datatype, 0)) : newSV(0)); hv_stores(metadata, "collation_name", collseq ? newSVpv(collseq, 0) : newSV(0)); hv_stores(metadata, "not_null", newSViv(notnull)); hv_stores(metadata, "primary", newSViv(primary)); diff --git a/t/51_table_column_metadata.t b/t/51_table_column_metadata.t index 7c63b59..f6a6d70 100644 --- a/t/51_table_column_metadata.t +++ b/t/51_table_column_metadata.t @@ -19,7 +19,7 @@ for my $call_func (@CALL_FUNCS) { my $data = $dbh->$call_func(undef, 'foo', 'id', 'table_column_metadata'); ok $data && ref $data eq ref {}, "got a metadata"; ok $data->{auto_increment}, "id is auto incremental"; - is lc($data->{data_type}) => 'integer', "data type is correct"; + is $data->{data_type} => 'integer', "data type is correct"; ok $data->{primary}, "id is a primary key"; ok !$data->{not_null}, "id is not null"; }