Skip to content

Joining attnum for attribute in index with attnum for attribute in table #1

@VladimirZhavoronkov

Description

@VladimirZhavoronkov

Causes "Primary key missing on table" exception when PK doesn't go first in table

) k ON (k.attnum = a.attnum)

Context.
Table:

some-database=# \d someschema.sometable
                                               Table "someschema.sometable"
      Column      |            Type             | Collation | Nullable |                 Default
------------------+-----------------------------+-----------+----------+------------------------------------------
 task_id          | text                        |           | not null |
 input_values     | jsonb                       |           | not null |
 overlap          | integer                     |           |          |
 infinite_overlap | boolean                     |           | not null |
 created          | timestamp without time zone |           |          |
 created_at       | timestamp with time zone    |           | not null | now()
 id_pool          | text                        |           |          |
 id_project       | integer                     |           |          |
 updated_at       | timestamp with time zone    |           | not null | now()
 id               | bigint                      |           | not null | nextval('someschema.sometable_id_seq'::regclass)
Indexes:
    "sometable_pk" PRIMARY KEY, btree (id)
    "sometable_pk_2" UNIQUE CONSTRAINT, btree (task_id)
    "idx_sometable__id_pool" btree (id_pool)
    "idxw_sometable__id_pool__infinite_overlap" btree (id_pool) WHERE infinite_overlap
    "sometable_input_values_content_idx" btree (md5(input_values ->> 'content'::text))
    "sometable_input_values_url_gin" gin ((input_values -> 'url'::text))
    "sometable_result_matching_result_idx" btree (md5(input_values ->> 'url'::text), md5(input_values ->> 'matching_result'::text))
    "sometable_task_id_id_pool_id_project_index" btree (task_id, id_pool, id_project)
    "sometable_task_id_id_pool_id_project_input_values_index" btree (task_id, id_pool, id_project, (input_values ->> 'url'::text))

Error:

$ londiste -v some-database.root.ini add-table someschema.sometable
2022-10-24 12:12:11,177 566245 DEBUG Connect 'db' to 'dbname=some-database'
2022-10-24 12:12:11,182 566245 DEBUG exec_query: select * from pgq_node.get_node_info('some-database-londiste')
2022-10-24 12:12:11,194 566245 DEBUG exec_query: select * from pgq_node.get_queue_locations('some-database-londiste')
2022-10-24 12:12:11,195 566245 DEBUG exec_cmd: select * from pgq_node.get_node_info('some-database-londiste')
2022-10-24 12:12:11,197 566245 DEBUG 100 Ok
2022-10-24 12:12:11,197 566245 DEBUG Connect 'provider_db' to 'dbname=some-database'
2022-10-24 12:12:11,208 566245 DEBUG SET LOCAL statement_timeout = 10000
2022-10-24 12:12:11,209 566245 DEBUG exec_cmd: select * from londiste.local_add_table('some-database-londiste', 'someschema.sometable', '[]', null, null)
2022-10-24 12:12:11,215 566245 ERROR Primary key missing on table: someschema.sometable
2022-10-24 12:12:11,215 566245 DEBUG Query was: select * from londiste.local_add_table('some-database-londiste', 'someschema.sometable', '[]', null, null)
2022-10-24 12:12:11,216 566245 ERROR Job some-database.root crashed: db error
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/skytools/scripting.py", line 635, in run_func_safely
    r = func()
  File "/usr/lib/python3/dist-packages/skytools/adminscript.py", line 66, in work
    fn(*cmdargs)
  File "/usr/lib/python3/dist-packages/londiste/admin.py", line 198, in cmd_add_table
    self.add_table(src_db, dst_db, tbl, create_flags, src_tbls)
  File "/usr/lib/python3/dist-packages/londiste/admin.py", line 273, in add_table
    self.exec_cmd(dst_curs, q, args)
  File "/usr/lib/python3/dist-packages/skytools/scripting.py", line 997, in exec_cmd
    raise Exception("db error")
Exception: db error

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions