Open mstmob opened 2 years ago
I guess you are using a simplified version of the asn1 definition. I change the name generation - which did actually generate wrong type names by duplicating the inner name only - which should resolve this issue: e8aa191000382a1fd16a9f0a6af5d9e9c4c24fa2
Could you try the most recent master?
Thanks for your quick reply and fix!
The create statements look fine but unfortunately the table names now exceed the default 63 character limitation of Postgres (https://stackoverflow.com/questions/27865770/how-long-can-postgresql-table-names-be).
As a consequence the table names are cut off at 63 chars and I get duplicate table names for systeminformationblocktype1v1320iesfreqhoppingparametersdlr13in
which should actually be something like SystemInformationBlockType1V1320IEsFreqHoppingParametersDlR13IntervalDlHoppingConfigCommonModeAr13IntervalTddR13
...
You are right, and sorry for not mentioning, that I use a custom generated subset of the LTE RRC spec which just includes the BCCH-DL-SCH-Message
PDU and excludes some ExtensionAdditions as well...
Not sure if this will catch all cases, but do you mind trying d662e56ec969156dfddbd3064fba6f90186d9d8c and c7b74013efadef7d8b4c77fa5e0f377c5d97cacd? It is on a separate branch https://github.com/kellerkindt/asn1rs/tree/test-psql-typename-limit
Thanks, and sorry for my late reply..
I tested both commits; at the moment the problem remains for the generation of the REFERENCES
statement.
For example
CREATE TABLE SystemInformationBlockType1V1320IEsFreqHoppingParametersDlR13 (
id SERIAL PRIMARY KEY,
mpdcch_pdsch_hopping_nb_r13 INTEGER REFERENCES SystemInformationBlockType1V1320IEsFreqHoppingParametersDlR13MpdcchPdschHoppingNbR13(id) ON DELETE CASCADE ON UPDATE CASCADE,
interval_dl_hopping_config_common_mode_a_r13 INTEGER REFERENCES SystemInformationBlockType1V1320IEsFreqHoppingParametersDlR13IntervalDlHoppingConfigCommonModeAr13(id) ON DELETE CASCADE ON UPDATE CASCADE,
interval_dl_hopping_config_common_mode_b_r13 INTEGER REFERENCES SystemInformationBlockType1V1320IEsFreqHoppingParametersDlR13IntervalDlHoppingConfigCommonModeBr13(id) ON DELETE CASCADE ON UPDATE CASCADE,
mpdcch_pdsch_hopping_offset_r13 SMALLINT
)
Error in query (7): ERROR: relation "systeminformationblocktype1v1320iesfreqhoppingparametersdlr13mp" does not exist
Warning: PDO::query(): SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "systeminformationblocktype1v1320iesfreqhoppingparametersdlr13" does not exist in /var/www/html/adminer.php on line 185
Hey, got another commit to that should fix the issue with the reference statements 2d69ca1ca4fa0c165d107d2ecde616eaf5e4bedd You wanna give it a try? Its also on the test-psql-typename-limit-branch
Hi, thanks! I tried the latest commit and the reference statements seem to be fixed now :+1:
However I get errors because of references to yet not created tables.
I see that the tables should be created later but the order of the CREATE TABLE
statements is wrong (The table dependencies are not resolved correctly...).
I don't know if this is out of scope and related to this issue?
Hi, I tried to convert a LTE RRC ASN1 spec to PSQL. The ASN1 definition contains inner/nested structures such as
ENUMERATED
with the same name multiple times. Example ASN1 spec (https://github.com/proj3rd/3gpp-specs/blob/master/36-series/36331/36331-f01.asn1#L2152-L2166):Resulting SQL definition via
asn1rs . ./spec.asn1 --convert-to sql
:Both
interval-FDD-r13
ENUMERATED for instance are converted to aIntervalFddR13IntervalFddR13
SQL table. The secondCREATE TABLE
statement fails because the table already exists.I am using the latest asn1rs master build (https://github.com/kellerkindt/asn1rs/tree/68afe21e68b8138414d3dec1f706bd5a7e86a95d)