Skip to content

Commit 980dc30

Browse files
committed
Merge remote-tracking branch 'upstream/main' into multipart-http-error
2 parents e93c962 + d9d4ea6 commit 980dc30

File tree

3 files changed

+376
-10
lines changed

3 files changed

+376
-10
lines changed

.gitignore

Lines changed: 357 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,357 @@
1+
#==============================================================================#
2+
# This file specifies intentionally untracked files that git should ignore.
3+
#==============================================================================#
4+
5+
#==============================================================================#
6+
# File extensions to be ignored anywhere in the tree.
7+
#==============================================================================#
8+
# Temp files created by most text editors.
9+
*~
10+
# Merge files created by git.
11+
*.orig
12+
# Java bytecode
13+
*.class
14+
# Byte compiled python modules.
15+
*.pyc
16+
# vim swap files
17+
.*.sw?
18+
.sw?
19+
#OS X specific files.
20+
.DS_store
21+
# Core files
22+
#core
23+
24+
#==============================================================================#
25+
# Explicit files to ignore (only matches one).
26+
#==============================================================================#
27+
# Various tag programs
28+
/tags
29+
/TAGS
30+
/GPATH
31+
/GRTAGS
32+
/GSYMS
33+
/GTAGS
34+
.gitusers
35+
autom4te.cache
36+
cscope.files
37+
cscope.out
38+
autoconf/aclocal.m4
39+
autoconf/autom4te.cache
40+
/compile_commands.json
41+
/.wasm
42+
43+
#==============================================================================#
44+
# Directories to ignore (do not add trailing '/'s, they skip symlinks).
45+
#==============================================================================#
46+
# External projects that are tracked independently.
47+
projects/*
48+
!projects/*.*
49+
!projects/Makefile
50+
51+
52+
#==============================================================================#
53+
# Autotools artifacts
54+
#==============================================================================#
55+
config/
56+
configure
57+
config-h.in
58+
autom4te.cache
59+
*Makefile.in
60+
third_party/*/Makefile
61+
libtool
62+
aclocal.m4
63+
config.log
64+
config.status
65+
stamp-h1
66+
m4/libtool.m4
67+
m4/ltoptions.m4
68+
m4/ltsugar.m4
69+
m4/ltversion.m4
70+
m4/lt~obsolete.m4
71+
72+
#==============================================================================#
73+
# Build artifacts
74+
#==============================================================================#
75+
#m4/
76+
build/
77+
duckdb_benchmark_data/
78+
#*.m4
79+
*.o
80+
*.lo
81+
*.la
82+
*~
83+
*.pdf
84+
*.swp
85+
a.out
86+
87+
#==============================================================================#
88+
# Kate Swap Files
89+
#==============================================================================#
90+
*.kate-swp
91+
.#kate-*
92+
93+
#==============================================================================#
94+
# Backup artifacts
95+
#==============================================================================#
96+
~*
97+
*~
98+
tmp/
99+
100+
#==============================================================================#
101+
# KDevelop files
102+
#==============================================================================#
103+
.kdev4
104+
*.kdev4
105+
.dirstamp
106+
.deps
107+
.libs
108+
109+
#==============================================================================#
110+
# Eclipse files
111+
#==============================================================================#
112+
.wtpmodules
113+
.classpath
114+
.project
115+
.cproject
116+
.pydevproject
117+
.settings
118+
.autotools
119+
.csettings
120+
121+
/Debug/
122+
/misc/
123+
124+
#==============================================================================#
125+
# Intellij files
126+
#==============================================================================#
127+
.idea
128+
*.iml
129+
130+
#==============================================================================#
131+
# Code Coverage files
132+
#==============================================================================#
133+
*.gcno
134+
*.gcda
135+
136+
#==============================================================================#
137+
# Scripts
138+
#==============================================================================#
139+
*.jar
140+
scripts/PelotonTest/out
141+
scripts/PelotonTest/lib
142+
143+
#==============================================================================#
144+
# Protobuf
145+
#==============================================================================#
146+
*.pb-c.c
147+
*.pb-c.h
148+
*.pb.go
149+
150+
#==============================================================================#
151+
# Third party
152+
#==============================================================================#
153+
third_party/nanomsg/
154+
third_party/nvml/
155+
third_party/logcabin/
156+
157+
#==============================================================================#
158+
# Eclipse
159+
#==============================================================================#
160+
161+
.metadata
162+
bin/
163+
tmp/
164+
*.tmp
165+
*.bak
166+
*.swp
167+
*~.nib
168+
local.properties
169+
.settings/
170+
.loadpath
171+
.recommenders
172+
173+
# Clang language server (C/C++ tooling)
174+
/.cache/clangd
175+
.ccls-cache
176+
177+
# Eclipse Core
178+
.project
179+
180+
# External tool builders
181+
.externalToolBuilders/
182+
183+
# Locally stored "Eclipse launch configurations"
184+
*.launch
185+
186+
# PyDev specific (Python IDE for Eclipse)
187+
*.pydevproject
188+
189+
# CDT-specific (C/C++ Development Tooling)
190+
.cproject
191+
192+
# JDT-specific (Eclipse Java Development Tools)
193+
.classpath
194+
195+
# RStudio specific
196+
.Rproj.user
197+
198+
# Java annotation processor (APT)
199+
.factorypath
200+
201+
# PDT-specific (PHP Development Tools)
202+
.buildpath
203+
204+
# sbteclipse plugin
205+
.target
206+
207+
# Tern plugin
208+
.tern-project
209+
210+
# TeXlipse plugin
211+
.texlipse
212+
213+
# STS (Spring Tool Suite)
214+
.springBeans
215+
216+
# Code Recommenders
217+
.recommenders/
218+
io_file
219+
220+
## General
221+
222+
# Compiled Object files
223+
*.slo
224+
*.lo
225+
*.o
226+
*.cuo
227+
228+
# Compiled Dynamic libraries
229+
*.so
230+
*.dylib
231+
*.dll
232+
233+
# Compiled Static libraries
234+
*.lai
235+
*.la
236+
*.a
237+
*.lib
238+
239+
# Compiled protocol buffers
240+
*_pb2.py
241+
242+
# Compiled python
243+
*.pyc
244+
245+
# Compiled MATLAB
246+
*.mex*
247+
248+
# IPython notebook checkpoints
249+
.ipynb_checkpoints
250+
251+
# Editor temporaries
252+
*.swp
253+
*~
254+
255+
# Sublime Text settings
256+
*.sublime-workspace
257+
*.sublime-project
258+
259+
# Eclipse Project settings
260+
*.*project
261+
.settings
262+
.csettings
263+
264+
# Visual Studio
265+
.vs
266+
settings.json
267+
.vscode
268+
269+
# QtCreator files
270+
*.user
271+
272+
# PyCharm files
273+
.idea
274+
275+
# OSX dir files
276+
.DS_Store
277+
278+
# User's build configuration
279+
Makefile.config
280+
281+
# build, distribute, and bins (+ python proto bindings)
282+
build
283+
.build_debug/*
284+
.build_release/*
285+
distribute/*
286+
*.testbin
287+
*.bin
288+
cmake_build
289+
.cmake_build
290+
cmake-build-debug
291+
cmake-build-release
292+
cmake-build-relwithdebinfo
293+
CMakeUserPresets.json
294+
295+
# Generated documentation
296+
docs
297+
298+
# tests
299+
test/test.sql
300+
duckdb_benchmark_data/
301+
302+
# SQLite logic tests
303+
test/evidence/
304+
third_party/sqllogictest
305+
306+
#imdb dataset
307+
third_party/imdb/data
308+
#taxi dataset
309+
benchmark/taxi/data/
310+
311+
# Format timer
312+
.last_format
313+
# Benchmarks
314+
.last_benchmarked_commit
315+
benchmark_results/
316+
duckdb_unittest_tempdir/
317+
grammar.y.tmp
318+
src/amalgamation/
319+
# single file compile
320+
amalgamation.cache
321+
dependencies.d
322+
deps.s
323+
duckdb.cpp.tmp
324+
duckdb.hpp.tmp
325+
# .Rcheck
326+
tools/duckdb.Rcheck/
327+
tools/*.tar.gz
328+
.Rhistory
329+
ub_*.cpp
330+
331+
# node tests
332+
__nvm
333+
334+
*.vcxproj*
335+
*.sln
336+
337+
# Zig files
338+
zig-out/*gs
339+
zig-cache/*
340+
*.zig
341+
342+
# .db files
343+
*.db
344+
*.db.gz
345+
346+
# local cmake extension config
347+
extension/extension_config_local.cmake
348+
349+
# extension_external dir
350+
extension_external
351+
352+
# pyodide (emscripten python) build and test environment
353+
.pyodide-xbuildenv
354+
.venv-pyodide
355+
356+
test/sql/pragma/output.json
357+
tools/pythonpkg/duckdb_build/

LICENSE

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Copyright 2018-2025 Stichting DuckDB Foundation
2+
3+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4+
5+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6+
7+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

extension/httpfs/httpfs.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -772,16 +772,18 @@ void HTTPFileHandle::Initialize(optional_ptr<FileOpener> opener) {
772772
FullDownload(hfs, should_write_cache);
773773
}
774774
if (!res->headers["Last-Modified"].empty()) {
775-
auto result = StrpTimeFormat::Parse("%a, %d %h %Y %T %Z", res->headers["Last-Modified"]);
776-
struct tm tm {};
777-
tm.tm_year = result.data[0] - 1900;
778-
tm.tm_mon = result.data[1] - 1;
779-
tm.tm_mday = result.data[2];
780-
tm.tm_hour = result.data[3];
781-
tm.tm_min = result.data[4];
782-
tm.tm_sec = result.data[5];
783-
tm.tm_isdst = 0;
784-
last_modified = mktime(&tm);
775+
StrpTimeFormat::ParseResult result;
776+
if (StrpTimeFormat::TryParse("%a, %d %h %Y %T %Z", res->headers["Last-Modified"], result)) {
777+
struct tm tm {};
778+
tm.tm_year = result.data[0] - 1900;
779+
tm.tm_mon = result.data[1] - 1;
780+
tm.tm_mday = result.data[2];
781+
tm.tm_hour = result.data[3];
782+
tm.tm_min = result.data[4];
783+
tm.tm_sec = result.data[5];
784+
tm.tm_isdst = 0;
785+
last_modified = mktime(&tm);
786+
}
785787
}
786788

787789
if (should_write_cache) {

0 commit comments

Comments
 (0)