Kbase P159607: Error 12628 occurs when attempting to modify a table unfrozen with ABL via a SQL client
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  2/3/2010 |
|
Status: Unverified
SYMPTOM(s):
Error 12628 occurs when attempting to modify a table unfrozen with ABL via a SQL client
Attempting to modify a table unfrozen via ABL with SQL (for example, with ALTER TABLE) fails with error 12628
=== SQL Exception 1 ===
SQLState=HY000
ErrorCode=-20193
[DataDirect][OpenEdge JDBC Driver][OpenEdge] Frozen tables (and their indexes) may not be dropped or altered. (12628)
[DataDirect][ODBC Progress OpenEdge Wire Protocol driver][OPENEDGE]Frozen tables (and their indexes) may not be dropped or altered. (12628)
Database needs to be restarted before tables unfrozen with ABL can be modified via SQL-92
FACT(s) (Environment):
Database contains frozen tables
Tables are unfrozen via ABL (for example, with Data Administration > Utilities > Freeze/Unfreeze...)
Modifications to the unfrozen tables are attempted using SQL
OpenEdge 10.1x
OpenEdge 10.2A
OpenEdge 10.2B
All Supported Operating Systems
CAUSE:
Data Dictionary does not update the schema timestamp when the table is unfrozen. If the SQL engine (_SQLSRV2) has the table info cached, it has no way of knowing that this information (including the frozen/unfrozen status of the table) is out of date.
FIX:
in SQL, the user can execute the following statement to unfreeze the table:
ALTER TABLE <table> SET pro_frozen 'n';
COMMIT;
This is redundant, but will allow SQL to see that the table is unfrozen.
In general, other schema changes (that do update the schema timestamp) will also cause SQL to reload its cache, and let SQL see that the table has been unfrozen.