diff --git a/thirdparty/download_thirdparty.bat b/thirdparty/download_thirdparty.bat
index 4b88511f9..fc0c1b9c5 100644
--- a/thirdparty/download_thirdparty.bat
+++ b/thirdparty/download_thirdparty.bat
@@ -10,10 +10,11 @@
git -C "grpc" submodule update --init "third_party/protobuf"
git -C "grpc" submodule update --init "third_party/nanopb"
git -C "grpc" submodule update --init "third_party/zlib"
- git -C "grpc" apply "%~dp0windows-patches/grpc-projects.patch"
- git -C "grpc/third_party/protobuf" apply "%~dp0windows-patches/protobuf-projects.patch"
- git -C "arrow/cpp/thirdparty/flatbuffers" apply "%~dp0windows-patches/flatbuffers-projects.patch"
- git -C "arrow/cpp/thirdparty/parquet" apply "%~dp0windows-patches/parquet-endian.patch"
- git -C "python" apply "%~dp0windows-patches/python-pyconfig.patch"
+ git -C "grpc" apply "%~dp0patches/grpc-source.patch"
+ git -C "grpc" apply "%~dp0patches/windows/grpc-projects.patch"
+ git -C "grpc/third_party/protobuf" apply "%~dp0patches/windows/protobuf-projects.patch"
+ git -C "arrow/cpp/thirdparty/flatbuffers" apply "%~dp0patches/windows/flatbuffers-projects.patch"
+ git -C "arrow/cpp/thirdparty/parquet" apply "%~dp0patches/windows/parquet-endian.patch"
+ git -C "python" apply "%~dp0patches/windows/python-pyconfig.patch"
@PopD
@EndLocal
diff --git a/thirdparty/patches/.gitattributes b/thirdparty/patches/.gitattributes
new file mode 100644
index 000000000..9812ceb1f
--- /dev/null
+++ b/thirdparty/patches/.gitattributes
@@ -0,0 +1 @@
+*.patch text eol=lf
diff --git a/thirdparty/patches/grpc-source.patch b/thirdparty/patches/grpc-source.patch
new file mode 100644
index 000000000..54116bf74
--- /dev/null
+++ b/thirdparty/patches/grpc-source.patch
@@ -0,0 +1,17 @@
+diff --git a/src/cpp/server/create_default_thread_pool.cc b/src/cpp/server/create_default_thread_pool.cc
+index f3b07ec..ede18cb
+--- a/src/cpp/server/create_default_thread_pool.cc
++++ b/src/cpp/server/create_default_thread_pool.cc
+@@ -40,8 +40,12 @@
+ namespace grpc {
+
+ ThreadPoolInterface* CreateDefaultThreadPool() {
++#ifdef NDEBUG
+ int cores = gpr_cpu_num_cores();
+ if (!cores) cores = 4;
++#else
++ int cores = 0;
++#endif
+ return new DynamicThreadPool(cores);
+ }
+
diff --git a/thirdparty/windows-patches/flatbuffers-projects.patch b/thirdparty/patches/windows/flatbuffers-projects.patch
similarity index 100%
rename from thirdparty/windows-patches/flatbuffers-projects.patch
rename to thirdparty/patches/windows/flatbuffers-projects.patch
diff --git a/thirdparty/windows-patches/grpc-projects.patch b/thirdparty/patches/windows/grpc-projects.patch
similarity index 90%
rename from thirdparty/windows-patches/grpc-projects.patch
rename to thirdparty/patches/windows/grpc-projects.patch
index 8b56e1d2b..05980f006 100644
--- a/thirdparty/windows-patches/grpc-projects.patch
+++ b/thirdparty/patches/windows/grpc-projects.patch
@@ -67,7 +67,7 @@ index 1bdc071..87a4bf4
+
\ No newline at end of file
diff --git a/vsprojects/vcxproj/gpr/gpr.vcxproj b/vsprojects/vcxproj/gpr/gpr.vcxproj
-index 2e403c2..df91b12
+index db8594e..623f3d5
--- a/vsprojects/vcxproj/gpr/gpr.vcxproj
+++ b/vsprojects/vcxproj/gpr/gpr.vcxproj
@@ -21,7 +21,6 @@
@@ -129,7 +129,7 @@ index 2e403c2..df91b12
true
None
false
-@@ -147,155 +136,155 @@
+@@ -147,152 +136,152 @@
@@ -223,7 +223,6 @@ index 2e403c2..df91b12
-
-
-
--
-
-
-
@@ -235,7 +234,6 @@ index 2e403c2..df91b12
+
+
+
-+
+
+
+
@@ -290,9 +288,6 @@ index 2e403c2..df91b12
-
+
--
-+
-
-
+
@@ -386,10 +381,10 @@ index 2e403c2..df91b12
diff --git a/vsprojects/vcxproj/gpr/gpr.vcxproj.filters b/vsprojects/vcxproj/gpr/gpr.vcxproj.filters
-index c952a78..949de28
+index 9bab373..d13e9c4
--- a/vsprojects/vcxproj/gpr/gpr.vcxproj.filters
+++ b/vsprojects/vcxproj/gpr/gpr.vcxproj.filters
-@@ -1,308 +1,308 @@
+@@ -1,302 +1,302 @@
@@ -453,10 +448,6 @@ index c952a78..949de28
+
src\core\lib\support
--
-+
- src\core\lib\support
-
-
+
src\core\lib\support
@@ -765,10 +756,6 @@ index c952a78..949de28
+
src\core\lib\support
--
-+
- src\core\lib\support
-
-
+
src\core\lib\support
@@ -799,7 +786,7 @@ index c952a78..949de28
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
-index 64c7b14..741c1ce
+index cb9e41e..05bbf99
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
@@ -37,7 +37,6 @@
@@ -893,7 +880,7 @@ index 64c7b14..741c1ce
true
None
false
-@@ -258,181 +243,181 @@
+@@ -258,184 +243,184 @@
@@ -902,14 +889,15 @@ index 64c7b14..741c1ce
-
-
-
+-
-
-
-
-
-
+-
-
-
--
-
-
-
@@ -930,10 +918,12 @@ index 64c7b14..741c1ce
-
-
-
+-
-
-
-
-
+-
-
-
-
@@ -950,11 +940,11 @@ index 64c7b14..741c1ce
-
-
-
+-
-
-
-
-
--
-
-
-
@@ -992,23 +982,20 @@ index 64c7b14..741c1ce
-
-
-
--
--
--
--
+
+
+
+
+
++
+
+
+
+
+
++
+
+
-+
+
+
+
@@ -1029,10 +1016,12 @@ index 64c7b14..741c1ce
+
+
+
++
+
+
+
+
++
+
+
+
@@ -1049,11 +1038,11 @@ index 64c7b14..741c1ce
+
+
+
++
+
+
+
+
-+
+
+
+
@@ -1091,21 +1080,17 @@ index 64c7b14..741c1ce
+
+
+
-+
-+
-+
-+
+-
-
--
-
-
-
-
-
++
+
-+
+
+
+
@@ -1143,6 +1128,9 @@ index 64c7b14..741c1ce
-
+
+-
++
+
-
+
@@ -1188,6 +1176,9 @@ index 64c7b14..741c1ce
-
+
+-
++
+
-
+
@@ -1214,10 +1205,10 @@ index 64c7b14..741c1ce
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
-index 5451f5b..7e59c0b
+index a905118..22bde52
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
-@@ -1,419 +1,419 @@
+@@ -1,422 +1,422 @@
@@ -1261,6 +1252,10 @@ index 5451f5b..7e59c0b
+
src\cpp\client
+-
++
+ src\cpp\client
+
-
+
src\cpp\client
@@ -1321,6 +1316,10 @@ index 5451f5b..7e59c0b
+
src\cpp\server
+-
++
+ src\cpp\server
+
-
+
src\cpp\util
@@ -1367,6 +1366,10 @@ index 5451f5b..7e59c0b
+
include\grpc++
+-
++
+ include\grpc++
+
-
+
include\grpc++\generic
@@ -1387,6 +1390,10 @@ index 5451f5b..7e59c0b
+
include\grpc++\impl
+-
++
+ include\grpc++\impl\codegen
+
-
+
include\grpc++\impl
@@ -1395,10 +1402,6 @@ index 5451f5b..7e59c0b
+
include\grpc++\impl
--
-+
- include\grpc++\impl
-
-
+
include\grpc++\impl
@@ -1479,6 +1482,10 @@ index 5451f5b..7e59c0b
+
include\grpc++
+-
++
+ include\grpc++
+
-
+
include\grpc++\support
@@ -1495,6 +1502,10 @@ index 5451f5b..7e59c0b
+
include\grpc++\support
+-
++
+ include\grpc++\support
+
-
+
include\grpc++\support
@@ -1559,6 +1570,10 @@ index 5451f5b..7e59c0b
+
include\grpc++\impl\codegen
+-
++
+ include\grpc++\impl\codegen
+
-
+
include\grpc++\impl\codegen
@@ -1575,10 +1590,6 @@ index 5451f5b..7e59c0b
+
include\grpc++\impl\codegen
--
-+
- include\grpc++\impl\codegen
-
-
+
include\grpc++\impl\codegen
@@ -1727,32 +1738,16 @@ index 5451f5b..7e59c0b
+
include\grpc\impl\codegen
--
-+
- include\grpc++\impl\codegen
-
--
-+
- include\grpc++\impl\codegen
-
--
-+
- include\grpc++\support
-
--
-+
- include\grpc++\support
-
+-
++
+ include\grpc++\impl\codegen
+
-
+
src\cpp\client
--
-+
- src\cpp\common
-
-
+
src\cpp\common
@@ -1775,7 +1770,7 @@ index 5451f5b..7e59c0b
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
-index 14f96d1..49968d4
+index a9e96da..f5b9a47
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -1,6 +1,6 @@
@@ -1880,7 +1875,7 @@ index 14f96d1..49968d4
true
None
false
-@@ -267,567 +256,569 @@
+@@ -267,36 +256,36 @@
@@ -1888,6 +1883,7 @@ index 14f96d1..49968d4
-
-
-
+-
-
-
-
@@ -1917,6 +1913,7 @@ index 14f96d1..49968d4
+
+
+
++
+
+
+
@@ -1944,304 +1941,9 @@ index 14f96d1..49968d4
+
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
+
+@@ -456,403 +445,405 @@
+
-
@@ -2268,8 +1970,8 @@ index 14f96d1..49968d4
-
+
--
-+
+-
++
-
+
@@ -2298,6 +2000,12 @@ index 14f96d1..49968d4
-
+
+-
++
+
+-
++
+
-
+
@@ -2325,6 +2033,15 @@ index 14f96d1..49968d4
-
+
+-
++
+
+-
++
+
+-
++
+
-
+
@@ -2496,6 +2213,9 @@ index 14f96d1..49968d4
-
+
+-
++
+
-
+
@@ -2625,6 +2345,9 @@ index 14f96d1..49968d4
-
+
+-
++
+
-
+
@@ -2706,9 +2429,15 @@ index 14f96d1..49968d4
-
+
+-
++
+
-
+
+-
++
+
-
+
@@ -2819,10 +2548,10 @@ index 14f96d1..49968d4
+
\ No newline at end of file
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
-index 1b188e5..b37d005
+index be77e53..7c8ea36
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
-@@ -1,1073 +1,1073 @@
+@@ -1,1121 +1,1121 @@
@@ -2858,8 +2587,8 @@ index 1b188e5..b37d005
+
src\core\lib\channel
--
-+
+-
++
src\core\lib\compression
-
@@ -2898,6 +2627,14 @@ index 1b188e5..b37d005
+
src\core\lib\iomgr
+-
++
+ src\core\lib\iomgr
+
+-
++
+ src\core\lib\iomgr
+
-
+
src\core\lib\iomgr
@@ -2934,6 +2671,18 @@ index 1b188e5..b37d005
+
src\core\lib\iomgr
+-
++
+ src\core\lib\iomgr
+
+-
++
+ src\core\lib\iomgr
+
+-
++
+ src\core\lib\iomgr
+
-
+
src\core\lib\iomgr
@@ -3162,6 +2911,10 @@ index 1b188e5..b37d005
+
src\core\ext\transport\chttp2\server\secure
+-
++
+ src\core\ext\transport\chttp2\transport
+
-
+
src\core\ext\transport\chttp2\transport
@@ -3334,6 +3087,10 @@ index 1b188e5..b37d005
+
src\core\lib\security\transport
+-
++
+ src\core\lib\security\transport
+
-
+
src\core\lib\security\util
@@ -3442,10 +3199,18 @@ index 1b188e5..b37d005
+
src\core\ext\transport\chttp2\server\insecure
+-
++
+ src\core\ext\transport\chttp2\server\insecure
+
-
+
src\core\ext\transport\chttp2\client\insecure
+-
++
+ src\core\ext\transport\chttp2\client\insecure
+
-
+
src\core\ext\lb_policy\grpclb
@@ -3552,6 +3317,10 @@ index 1b188e5..b37d005
+
include\grpc
+-
++
+ include\grpc
+
-
+
include\grpc
@@ -3722,6 +3491,14 @@ index 1b188e5..b37d005
+
src\core\lib\iomgr
+-
++
+ src\core\lib\iomgr
+
+-
++
+ src\core\lib\iomgr
+
-
+
src\core\lib\iomgr
@@ -3758,6 +3535,18 @@ index 1b188e5..b37d005
+
src\core\lib\iomgr
+-
++
+ src\core\lib\iomgr
+
+-
++
+ src\core\lib\iomgr
+
+-
++
+ src\core\lib\iomgr
+
-
+
src\core\lib\iomgr
@@ -3918,10 +3707,6 @@ index 1b188e5..b37d005
+
src\core\lib\surface
--
-+
- src\core\lib\surface
-
-
+
src\core\lib\transport
@@ -3950,6 +3735,10 @@ index 1b188e5..b37d005
+
src\core\lib\transport
+-
++
+ src\core\ext\transport\chttp2\transport
+
-
+
src\core\ext\transport\chttp2\transport
@@ -4098,6 +3887,10 @@ index 1b188e5..b37d005
+
src\core\lib\security\transport
+-
++
+ src\core\lib\security\transport
+
-
+
src\core\lib\security\util
@@ -4251,7 +4044,7 @@ index 1b188e5..b37d005
src\core\ext\census
-@@ -1251,5 +1251,7 @@
+@@ -1299,5 +1299,7 @@
{93d6596d-330c-1d27-6f84-3c840e57869e}
@@ -4360,7 +4153,7 @@ index 421c308..bfa41be
diff --git a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj
-index a81d317..8b6c00e
+index 9828b8b..ac30116
--- a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj
+++ b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj
@@ -21,7 +21,6 @@
@@ -4424,17 +4217,11 @@ index a81d317..8b6c00e
true
None
false
-@@ -148,40 +137,40 @@
+@@ -148,37 +137,37 @@
--
--
--
-
-+
-+
-+
+
@@ -4491,10 +4278,10 @@ index a81d317..8b6c00e
diff --git a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj.filters b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj.filters
-index b3d2dc2..562c311
+index 27eb935..207944a
--- a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj.filters
-@@ -1,83 +1,83 @@
+@@ -1,74 +1,74 @@
-
+
@@ -4525,18 +4312,6 @@ index b3d2dc2..562c311
--
-+
- include\grpc++\support
-
--
-+
- include\grpc++\support
-
--
-+
- include\grpc++\impl\codegen
-
-
+
include\grpc++\impl\codegen
diff --git a/thirdparty/windows-patches/parquet-endian.patch b/thirdparty/patches/windows/parquet-endian.patch
similarity index 100%
rename from thirdparty/windows-patches/parquet-endian.patch
rename to thirdparty/patches/windows/parquet-endian.patch
diff --git a/thirdparty/windows-patches/protobuf-projects.patch b/thirdparty/patches/windows/protobuf-projects.patch
similarity index 100%
rename from thirdparty/windows-patches/protobuf-projects.patch
rename to thirdparty/patches/windows/protobuf-projects.patch
diff --git a/thirdparty/windows-patches/python-pyconfig.patch b/thirdparty/patches/windows/python-pyconfig.patch
similarity index 100%
rename from thirdparty/windows-patches/python-pyconfig.patch
rename to thirdparty/patches/windows/python-pyconfig.patch
diff --git a/thirdparty/windows-patches/.gitattributes b/thirdparty/windows-patches/.gitattributes
deleted file mode 100644
index 33fbcd6a7..000000000
--- a/thirdparty/windows-patches/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-/*.patch text eol=lf