-
Notifications
You must be signed in to change notification settings - Fork 3.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
geoprojbase: do not allocate projections with a static map #63969
Comments
63970: geoprojbase: refactor everything to use the Projection abstraction r=sumeerbhola a=otan Previously, we use the projections map directly, which violates abstraction bounds as we probably want to keep that map private. We remedy this by moving everything behind the a Projection function abstraction which prevents this leakage. Furthermore, make Projection return an error directly. This is marked, so we are able to reword error messages in other places. Makes progress on #63969 Release note: None Co-authored-by: Oliver Tan <[email protected]>
This shouldn't be too hard since we can just modify the template to generate whatever we want. Where does one find the |
would've been smart but may have been lost to time. may have to generate anything off the existing map :| |
Ah, too bad. Should I nuke |
actually, you should be able to do |
I was able to generate a json from the hardcoded constants, but it would be nice if we could generate it directly from the |
Unfortunately, the |
csv: https://gist.github.com/otan/73f201cf89aeec458db6e19957567ba6
:( yeah ... i mean if you really wanted to, we could make |
Thank you! I don't think |
This results in about 20% more stuff (I'm guessing it's from a newer version). I will move forward with the data that we have already, but I will include the updated |
more stuff is ok imo, more in line with postgis. but your call! |
Sure, but that should be separate, I don't want the data and the mechanism to change together. |
73941: roachtest: make crdb crash on span-use-after-Finish r=andreimatei a=andreimatei This patch makes roachtest pass an env var to crdb asking it to panic on mis-use of tracing spans. I've been battling such bugs, which become more problematic as I'm trying to introduce span reuse. In production we'll probably continue tolerating such bugs for the time being, but I want tests to yell. Unit tests are already running with this use-after-Finish detection, and so far so good. I've done a manual run of all the roachtests in this configuration and nothing crashed, so I don't expect a tragedy. Release note: None 74109: kv: rename gcQueue to mvccGCQueue r=tbg a=nvanbenschoten This commit renames the "GC queue" to the "MVCC GC queue" (which GC's old MVCC versions) to avoid confusion with the "replica GC queue" (which GC's abandoned replicas). We've already been using this terminology in various other contexts to avoid confusion, so this refactor updates the code to reflect this naming. This comes in response to #73838, which found a bug that had survived for three years and was a direct consequence of this ambiguous naming. The commit doesn't go quite as far as renaming the `pkg/kv/kvserver/gc` package, but that could be a follow-up to this commit. 74126: geo: move projection data to embedded compressed file r=RaduBerinde a=RaduBerinde The geoprojbase package embeds projection info as constants, leading to a 6MB code file. Large code files are undesirable especially from the perspective of static analysis tools, IDEs, etc. This change moves the projections data to an embedded json.gz file. We define the schema of this file in a new `embeddedproj` subpackage. The data is loaded lazily. The data file was obtained by modifying the existing constants to fill out an `embeddedproj.Data`: https://github.com/RaduBerinde/cockroach/blob/geospatial-proj-data/pkg/geo/geoprojbase/embeddedproj/data_test.go The `generate-spatial-ref-sys` command is also updated to generate this file from the `.csv`. The `make buildshort` binary size is decreased by ~7MB. Fixes #63969. Release note: None 74128: cockroach: don't import randgen in binary r=RaduBerinde a=RaduBerinde The `sql/randgen` package creates a lot of global datums, some of which use geospatial and require the loading of geospatial data. This package is meant for testing and should not be part of the cockroach binary. This change removes the non-testing uses of randgen. Tested via `go list -deps ./pkg/cmd/cockroach`. Note that the updated test is ineffectual for now (tracked by #74119). Informs #74120. Release note: None 74159: sql: default index recommendations to be off for logic tests r=nehageorge a=nehageorge **sql: refactor GlobalDefault for session variables** This commit refactors pkg/sql/vars.go to use globalFalse and globalTrue as the setting GlobalDefault where possible. Release note: None **sql: default index recommendations to be off for logic tests** This commit configures index recommendations to be off for logic tests. This is to avoid flaky tests, as the index recommendation output can vary depending on the best plan chosen by the optimizer. Fixes: #74069. Release note: None Co-authored-by: Andrei Matei <[email protected]> Co-authored-by: Nathan VanBenschoten <[email protected]> Co-authored-by: Radu Berinde <[email protected]> Co-authored-by: Neha George <[email protected]>
The geoprojbase package embeds projection info as constants, leading to a 6MB code file. Large code files are undesirable especially from the perspective of static analysis tools, IDEs, etc. This change moves the projections data to an embedded json.gz file. We define the schema of this file in a new `embeddedproj` subpackage. The data is loaded lazily. The data file was obtained by modifying the existing constants to fill out an `embeddedproj.Data`: https://github.com/RaduBerinde/cockroach/blob/geospatial-proj-data/pkg/geo/geoprojbase/embeddedproj/data_test.go The `generate-spatial-ref-sys` command is also updated to generate this file from the `.csv`. The `make buildshort` binary size is decreased by ~7MB. Fixes cockroachdb#63969. Release note: None
Currently https://github.com/cockroachdb/cockroach/blob/master/pkg/geo/geoprojbase/projections.go is a ~99k line file that generates ~10MB to the release binary.
We can reduce this by storing this metadata as a compressed string, which can be initialized on the first instantiation of
Projection
. Alternatively, we should probahly usego:embed
now that that's out.Potentially a good first issue, but a meaty one.
The text was updated successfully, but these errors were encountered: