21
Could not find index descriptor for objid %d, indid %d in dbid %d.
Each index accessed in Adaptive Server requires a descriptor that is a “handle” for referencing the index. When the descriptor is no longer needed (for example, the query completes or the index is dropped), the server frees up the descriptor so that it can be assigned to another object as needed.
Error 8419 prevents a stored procedure or other compiled object from being recompiled after an index or a table column is dropped; consequently the server attempts to process the query via a stale plan, using the missing index or column. When the descriptor containing sysindexes information for the index is found to be missing from cache, error 8419 is raised. Here is a typical scenario:
1> create table t1 2> create procedure p1 as insert into t1 values(...) 3> go 1> begin transaction 2> go 1> create clustered index on t1(..) 2> execute procedure p1 (query plan uses the new index) 3> rollback transaction (index dropped) 4) go 1> execute procedure p1 (Error 8419 raised as the server attempts to use the old plan)
Error 8419 is due to an Adaptive Server problem and is raised with the following states.
All states do not occur in all versions of the product and additional state may have been added or removed since this book was published. Contact Sybase Technical Support for more information.
State |
Meaning |
---|---|
1 |
Index descriptor row not found in cache when attempting to make a copy of the table’s first index structure. |
2 |
Index descriptor row not found in cache when attempting to copy the next index structure for the table. |
3 |
Could not retrieve a pointer to the first index descriptor row for the table in the cache. |
4 |
Could not retrieve a pointer to the next index for the table in the cache as expected. |
5 |
Could not retrieve a specific field within an index descriptor row using a pointer to the table’s first index row. |
6 |
Could not retrieve a specific field within an index descriptor row using a pointer to the table’s next index row. |
7 |
Could not retrieve a pointer to an index descriptor row in the cache after dropping the index. |
8 |
Could not retrieve a pointer to an index descriptor row in the cache after dropping a column of the table. |
9 |
Could not retrieve a pointer to an index descriptor row in the cache while accessing the root page of the index. This state is raised only by diagserver. |
10 |
Could not retrieve a pointer to an index descriptor row in the cache while releasing locks associated with the row. |
11 |
Could not find the start of the index descriptor chain. |
12 |
Could not update a specific field within an index descriptor row using a pointer to the index row. |
Drop and recompile the stored procedure hitting the error. If that does not resolve the problem, contact Sybase Technical Support.
Have the information listed in “Reporting errors” when you call Sybase Technical Support.
All versions