| Previous | Next |
| QPLIST_E_DUPLICATE | QPLIST_E_BYREF_USED_WITHOUT_PTRTYPE |
QPLIST_E_VECTORBYREF_USED_ALONE
DBTYPE_VECTOR or DBTYPE_BYREF appears without a base type
QPLIST_E_VECTORBYREF_USED_ALONE is the failure HRESULT 0x8004165D (-2147215779 signed; 2147751517 unsigned). Its severity bit is 1, facility is 4 (FACILITY_ITF), and code is 0x165D. AllStat describes it as “DBTYPE_VECTOR or DBTYPE_BYREF used alone.”
Where the failure belongs
This result belongs to legacy Windows property-list parsing and is returned while validating the composed OLE DB type expression. The exact condition is: a modifier is serialized as the entire type because the base DBTYPE is empty, dropped or combined incorrectly. This stage matters because converting the result to a generic COM failure removes the information needed to choose the owner and retry policy.
This value belongs to the legacy property-list parser used to describe indexed properties and their types. Diagnose the external list as structured configuration: preserve line, column, token, type grammar and the property-list version instead of treating the file as arbitrary text. The exact public message comes from the legacy SDK contract; current property-system documentation does not replace the property-list grammar that rejected this file.
Likely causes
- This result can appear when raw type expression disagrees with the state expected while validating the composed OLE DB type expression.
- a stale or transformed numeric DBTYPE flags can make the component observe that a modifier is serialized as the entire type because the base DBTYPE is empty, dropped or combined incorrectly.
- an incomplete expected base type hides the distinction needed to separate this HRESULT from a later catalog or service failure.
- changes in modifier intent between validation and execution can reproduce the result even when the user-visible input looks unchanged.
- Retrying this result with the same consumer binding leaves the decisive contract violation intact.
The strongest hypothesis for this HRESULT must account for the operation—validating the composed OLE DB type expression—and the documented condition. Rejection of the property list does not yet distinguish file access, tokenization, type composition, GUID syntax or duplicate-definition failure.
Telemetry that matters
- preserve raw type expression before objects or work items are released.
- associate numeric DBTYPE flags with the exact UTC timestamp and correlation identifier.
- compare failing and known-good values for expected base type under the same provider or handler version.
- record the source and normalization path of modifier intent, not only its display form.
- use consumer binding to test whether the failure belongs to parsing, execution, indexing or capability negotiation.
- preserve property-list file identity and hash before objects or work items are released.
Evidence for this HRESULT should reflect what the component actually received. Hash the complete file if it is sensitive while retaining encoding, line, column, raw token class and the surrounding property declaration.
Verification workflow
- Capture raw type expression and numeric DBTYPE flags at the call boundary that returns this result.
- confirm the operation reached validating the composed OLE DB type expression with the intended expected base type.
- perform the decisive check: recover the actual base type from property schema and inspect numeric flag composition.
- reduce the case until changing modifier intent alone changes the HRESULT or proves it irrelevant.
- apply the recovery only after verifying consumer binding; preserve the original result for comparison.
A useful control for this HRESULT changes one dimension at a time. Begin with a one-property list accepted by the same parser, then restore the failing declaration token by token while preserving encoding and line endings.
Safe remediation
Combine the modifier with the correct base type or remove an unintended modifier. Retry it only after the responsible input or state changes and the previous operation has completed or been cancelled. Delay cannot repair a deterministic file, token or type-grammar defect; retry only after the property list or its readable source changes.
Avoid the wrong conclusion
It does not prove that every property definition is unusable or that reindexing is required; it identifies a property-list read or grammar boundary. Without code-specific evidence for this HRESULT, the value also cannot identify which wrapper, configuration, handler or service transition introduced the condition.
How nearby codes differ
QPLIST_E_BYREF_USED_WITHOUT_PTRTYPE has a base type, but that base is not permitted with BYREF. Keep the symbolic HRESULT beside the stage name in telemetry because nearby constants may require different owners, user messages and retry rules despite the same visible symptom.
Developer and administrator guidance
Retain the property-list file hash, encoding, parser version, line and column, raw token and expected grammar production. Do not log credentials or unrestricted document content. Before replacing the whole property configuration for this HRESULT, validate a copied file and preserve the exact failing location.
Worked example
A byte-vector property is emitted as DBTYPE_VECTOR without DBTYPE_UI1. Correct flag composition restores the intended type. A regression test for this HRESULT should assert the decisive evidence, change only the responsible condition, and include one neighboring HRESULT so future code cannot collapse distinct failures into a generic message.
Official Microsoft references
- Microsoft: legacy Indexing Service error messages
- Microsoft: OLE DB provider for Indexing Service
- Microsoft: Windows Search SQL syntax
- Microsoft: HRESULT values
Looking for a different code? Search another status or error code.
