{"action":"created","issue":{"url":"https://api.github.com/repos/cockroachdb/cockroach/issues/3444","labels_url":"https://api.github.com/repos/cockroachdb/cockroach/issues/3444/labels{/name}","comments_url":"https://api.github.com/repos/cockroachdb/cockroach/issues/3444/comments","events_url":"https://api.github.com/repos/cockroachdb/cockroach/issues/3444/events","html_url":"https://github.com/cockroachdb/cockroach/issues/3444","id":122159272,"number":3444,"title":"SQL: Reconsider Reserved ID Ranges for Table Descriptors","user":{"login":"mrtracy","id":6969858,"avatar_url":"https://avatars.githubusercontent.com/u/6969858?v=3","gravatar_id":"","url":"https://api.github.com/users/mrtracy","html_url":"https://github.com/mrtracy","followers_url":"https://api.github.com/users/mrtracy/followers","following_url":"https://api.github.com/users/mrtracy/following{/other_user}","gists_url":"https://api.github.com/users/mrtracy/gists{/gist_id}","starred_url":"https://api.github.com/users/mrtracy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrtracy/subscriptions","organizations_url":"https://api.github.com/users/mrtracy/orgs","repos_url":"https://api.github.com/users/mrtracy/repos","events_url":"https://api.github.com/users/mrtracy/events{/privacy}","received_events_url":"https://api.github.com/users/mrtracy/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-12-14T23:49:04Z","updated_at":"2015-12-15T20:07:24Z","closed_at":null,"body":"In our current system, special semantics on metadata tables (e.g. SystemDB) are enforced using \"Reserved \"descriptor ID ranges at the beginning of the ID space; for example, \"system\" tables are identified by having an ID <= MaxSystemDescriptorID.\r\n\r\nThe difficulty comes when we need to divide the reserved space into subsections; for example, we are dividing the currently reserved space into two sections - the first will house SystemDB and its tables (the contents of which are gossiped), while the second section will contain other internal tables which are not gossiped, but do have special semantics (e.g. cannot be dropped).  Using reserved-range subdivision will not work in the future when the schema is locked down.\r\n\r\nWe should consider a different system for assigning special properties to these tables if possible."},"comment":{"url":"https://api.github.com/repos/cockroachdb/cockroach/issues/comments/164880897","html_url":"https://github.com/cockroachdb/cockroach/issues/3444#issuecomment-164880897","issue_url":"https://api.github.com/repos/cockroachdb/cockroach/issues/3444","id":164880897,"user":{"login":"bdarnell","id":160562,"avatar_url":"https://avatars.githubusercontent.com/u/160562?v=3","gravatar_id":"","url":"https://api.github.com/users/bdarnell","html_url":"https://github.com/bdarnell","followers_url":"https://api.github.com/users/bdarnell/followers","following_url":"https://api.github.com/users/bdarnell/following{/other_user}","gists_url":"https://api.github.com/users/bdarnell/gists{/gist_id}","starred_url":"https://api.github.com/users/bdarnell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bdarnell/subscriptions","organizations_url":"https://api.github.com/users/bdarnell/orgs","repos_url":"https://api.github.com/users/bdarnell/repos","events_url":"https://api.github.com/users/bdarnell/events{/privacy}","received_events_url":"https://api.github.com/users/bdarnell/received_events","type":"User","site_admin":false},"created_at":"2015-12-15T20:07:23Z","updated_at":"2015-12-15T20:07:23Z","body":"Transferring my comments from #3425: The gossiped tables are loaded in bulk, so it is helpful to give them a reserved descriptor range so they are contiguous at the KV level. The need for a reserved descriptor range is less clear for non-gossiped tables, but one thing it gives us is the ability to control all system tables with a single zone config. It's unclear how useful this is, though, since the reserved tables include both metadata tables (which are small and may want a higher replication factor for availability) and log/timeseries tables (which are large and don't need as much replication)."}}