{"record":{"id":"80bdaef8d3bdb141","repo":"pathwaycom/pathway","slug":"primary-key-and-vector-both-reference-column-pk-n","errorCode":null,"errorMessage":"primary_key and vector both reference column {pk_name!r}; they must be different columns.","messagePattern":"primary_key and vector both reference column (.+?); they must be different columns\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/pathway/io/pinecone/__init__.py","lineNumber":356,"sourceCode":"\n    if primary_key is not None and primary_key._table is not table:\n        raise ValueError(\n            f\"primary_key column {primary_key._name!r} does not belong to the \"\n            f\"provided table. Pass a column reference from the same table, \"\n            f\"e.g. primary_key=table.{primary_key._name}.\"\n        )\n    if vector._table is not table:\n        raise ValueError(\n            f\"vector column {vector._name!r} does not belong to the provided \"\n            f\"table. Pass a column reference from the same table, \"\n            f\"e.g. vector=table.{vector._name}.\"\n        )\n\n    pk_name = primary_key._name if primary_key is not None else None\n    vector_name = vector._name\n\n    if pk_name == vector_name:\n        raise ValueError(\n            f\"primary_key and vector both reference column {pk_name!r}; they must \"\n            \"be different columns.\"\n        )\n\n    if metadata_columns is None:\n        metadata_names = [\n            col_name\n            for col_name in table.column_names()\n            if col_name not in (pk_name, vector_name)\n        ]\n    else:\n        metadata_names = []\n        for col in metadata_columns:\n            if col._table is not table:\n                raise ValueError(\n                    f\"metadata column {col._name!r} does not belong to the \"\n                    f\"provided table. Pass column references from the same table, \"\n                    f\"e.g. table.{col._name}.\"","sourceCodeStart":338,"sourceCodeEnd":374,"githubUrl":"https://github.com/pathwaycom/pathway/blob/fa2f74a4649b7c5908690cf60137263d8d80de5f/python/pathway/io/pinecone/__init__.py#L338-L374","documentation":"Raised by pw.io.pinecone.write() when primary_key and vector resolve to the same column name. A Pinecone record id cannot also be its own embedding vector, so the connector rejects the duplicate reference up front rather than sending malformed upserts.","triggerScenarios":"Passing the same column reference for both arguments: primary_key=table.v, vector=table.v; or two same-named columns from the same table when primary_key defaults collide with the vector choice.","commonSituations":"Copy-pasting a write() call and forgetting to change the vector column; pipelines where the id column temporarily holds embeddings during migration.","solutions":["Choose distinct columns: primary_key=table.doc_id, vector=table.embedding.","If the data really is one column, materialize a separate id column first (e.g. with table.with_columns() or an index) before writing."],"exampleFix":"# before\npw.io.pinecone.write(table, index_name=\"docs\", primary_key=table.v, vector=table.v, api_key=k)\n# after\npw.io.pinecone.write(table, index_name=\"docs\", primary_key=table.doc_id, vector=table.v, api_key=k)","handlingStrategy":"validation","validationCode":"if primary_key is not None and primary_key._name == vector._name:\n    raise ValueError(\"primary_key and vector must be different columns\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Name embedding columns distinctly from id columns (doc_id vs embedding).","Write a smoke test that constructs the write() call against a debug table to catch config mistakes early."],"tags":["pinecone","pathway","duplicate-argument","validation"],"backgroundTag":null,"analyzedSha":"fa2f74a4649b7c5908690cf60137263d8d80de5f","analyzedAt":"2026-08-15T01:48:17.006Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}