DuckDB is an in-process SQL OLAP Database Management System

Overview

.github/workflows/main.yml CodeFactor Coverage Status

Installation

If you just want to install and use DuckDB, please see our website for installation and usage instructions.

Development

For development, DuckDB requires CMake, Python3 and a C++11 compliant compiler. Run make in the root directory to compile the sources. For development, use make debug to build a non-optimized debug version. You should run make unit and make allunit to verify that your version works properly after making changes. To test performance, you can run several standard benchmarks from the root directory by executing ./build/release/benchmark/benchmark_runner.

Please also refer to our Contribution Guide.

Issues
  • Function Compatibility with Other Systems

    Function Compatibility with Other Systems

    Merging a few issues into one here.

    Numeric Scalar

    • [x] ACOS, ASIN, ATAN, COS, SIN, TAN, COT, ATAN2 [MySQL, PostgreSQL]
    • [x] BIT_AND, BIT_COUNT, BIT_LENGTH, BIT_OR, BIT_XOR, ~ [MySQL]
    • [x] CEIL, CEILING, FLOOR [MySQL, PostgreSQL]
    • [x] LOG, LOG10, LOG2, LN [MySQL, PostgreSQL]
    • [x] PI [PostgreSQL]
    • [x] RANDOM
    • [x] SQRT, POWER, CBRT [PostgreSQL]
    • [x] LEAST, GREATEST

    https://www.postgresql.org/docs/8.4/functions-math.html https://dev.mysql.com/doc/refman/8.0/en/func-op-summary-ref.html

    Operators

    PostgreSQL

    • [x] IS (NOT) DISTINCT FROM
    • [x] ^ (exponent)
    • [x] @ (absolute value)
    • [x] ! (factorial)

    Date Functions

    • [x] DAY, MONTH, DAYOFYEAR, WEEK, QUARTER, YEAR
    • [x] DAYOFMONTH, DAYNAME, LAST_DAY, MONTHNAME, WEEKDAY, WEEKOFYEAR, YEARWEEK [MySQL, https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_year]
    • [x] CURRENT_DATE
    • [X] AGE
    • [X] DATE_PART, DATE_TRUNC

    Timestamp Functions

    • [x] NOW
    • [x] MICROSECOND, MINUTE, SECOND, HOUR
    • [x] TIMEOFDAY
    • [x] DATE_TRUNC
    • [x] AGE

    https://www.postgresql.org/docs/9.1/functions-datetime.html

    String Functions

    • [X] UPPER, LOWER [SQLite, PostgreSQL]
    • [X] LENGTH
    • [X] (NOT) LIKE
    • [X] REGEXP_MATCHES, REGEXP_REPLACE
    • [x] UCASE, LCASE [MySQL]
    • [x] RTRIM, LTRIM [SQLite, MySQL]
    • [x] PRINTF [SQLite]
    • [x] REPLACE [SQLite]
    • [x] INSTR [SQLite]
    • [x] REVERSE [MySQL]
    • [x] REPEAT [MySQL]
    • [x] REVERSE [MySQL]
    • [x] CONCAT, CONCAT_WS [MySQL] #217
    • [x] LPAD, RPAD [MySQL]
    • [x] typeof [SQLite]
    • [x] unicode [SQLite]

    https://dev.mysql.com/doc/refman/8.0/en/string-functions.html https://www.postgresql.org/docs/9.1/functions-string.html https://sqlite.org/lang_corefunc.html https://www.oracletutorial.com/oracle-string-functions/

    Set Returning Functions

    • [x] GENERATE_SERIES [PostgreSQL]

    https://www.postgresql.org/docs/9.1/functions-srf.html

    Sequences

    • [X] NEXTVAL (PostgreSQL)

    Nested Types

    • [ ] generate_subscripts (PostgreSQL)

    Other

    • [x] IF, IFNULL [MySQL]
    • [X] RANDOM, SETSEED

    Aggregates

    • [X] COUNT, MIN, MAX, SUM, AVG
    • [X] FIRST
    • [X] STRING_AGG
    • [x] GROUP_CONCAT (same as STRING_AGG?) [SQLite, MySQL]
    • [X] STDDEV_SAMP, STDDEV_POP, VAR_POP, VAR_SAMP
    • [X] COVAR_POP, COVAR_SAMP

    More possible functions -> Oracle: https://www.techonthenet.com/oracle/functions/index.php SQL Server: https://www.techonthenet.com/sql_server/functions/index.php Clickhouse: https://clickhouse.tech/docs/en/query_language/functions/

    good first issue 
    opened by Mytherin 44
  • timestamptz?

    timestamptz?

    Is there a specific reason that TZ support is not provided?

    I might be missing something, but in my experience, (1) it can be informative to have the TZ information, regardless of the ability to compensate for time zone differences; (2) too many programmers either don't know how to correct for TZ correct -- especially with DST -- or they don't even try due to ignorance or laziness. Many of the problems I've had (with client databases) have been resolved by identifying code that forgot how to do things like this.

    I recognize sqlite's DATETIME is also without TZ, but that doesn't make it the best way to go.

    I suggest a way forward:

    • add support TIMESTAMP WITHOUT TIME ZONE and TIMESTAMP WITH TIME ZONE
    • TIMESTAMP is just an alias to "without"
    opened by r2evans 40
  • feature request: scan_parquet on folders

    feature request: scan_parquet on folders

    Loving the package and am going to teach it in my data science classes. Question, do you know if scan_parquet can be used to check folders? e.g. suppose I sharded data.pq into data.pq/shard1,data.pq/shard2....

    enhancement 
    opened by alanpaulkwan 35
  • R function duckdb_read_csv() uses excessive memory?

    R function duckdb_read_csv() uses excessive memory?

    I am attempting to use the bulk importer to read in a large table from tsv. I was surprised to see my machine quickly runs out of available memory (~ 60 GB), as if I was trying to import the file into memory instead of reading into the on-disk database. This may be related to checkpointing (#420, #926, #973)?

    Here's an example using the ebird dataset, which is 101 GB (compressed).

    ## ~ 101 GB
    ebird_url <- "https://minio.thelio.carlboettiger.info/shared-data/ebird/ebd_relAug-2020.txt.gz"
    ebird <- "ebd_relAug-2020.txt.gz"
    download.file(ebird_url, ebird)
    
    con <- DBI::dbConnect(duckdb::duckdb(), dbdir = "local_database")
    duckdb_read_csv(con, 
                    "ebird", 
                    ebird, 
                    delim = "\t",
                    nrow.check=2e4)
    
    opened by cboettig 34
  • Not running on Ubuntu 18.04.5 (missing something..?)

    Not running on Ubuntu 18.04.5 (missing something..?)

    Downloaded the Linux CLI binary (0.21, same results with e26286d9823c0b71bd02cf2e184e9031c9a273df): file duckdb: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=dd8544b648321f5918a10ef3808a1f17044c6f19, not stripped

    When running it: duckdb: duckdb: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: versionGLIBCXX_3.4.26' not found (required by duckdb)`

    I have /usr/lib/x86_64-linux-gnu/libstdc++.so.6 from package libstdc++6:amd64 , but something is wrong... This is on Ubuntu 18.04.5 LTS.

    opened by pepa65 30
  • Support Arrow for table scans and result sets

    Support Arrow for table scans and result sets

    Would you consider a adding support for arrow result set (and eventually consuming) format? That would give you immediate bindings for many languages (C++, Java, Javascript, go, rust, R, python, ...).

    opened by fsaintjacques 29
  • `Make` fails on Windows: recipe for target 'debug' failed

    `Make` fails on Windows: recipe for target 'debug' failed

    Sorry for pestering with frequent problems but I don't seem to be able to build DuckDb on Windows using MingW. It throws me the error. While on Mac it is perfectly fine. Any pointers?

    cmake       - DBUILD_PARQUET_EXTENSION=TRUE -DCMAKE_BUILD_TYPE=Debug ../.. & \
    cmake --build .
    The syntax of the command is incorrect.
    Makefile:61: recipe for target 'debug' failed
    mingw32-make: *** [debug] Error 1
    
    opened by chilarai 28
  • [Question]: is there any graphical client to be used by non-tech?

    [Question]: is there any graphical client to be used by non-tech?

    I use extensively duckdb for my analytics but I need to share my database with some of my clients. They do not know any programming language so they need a client software to open database.

    is there any software available to open duckdb database?

    thanks in advance

    opened by verajosemanuel 27
  • UDF support in API

    UDF support in API

    We should support a simple interface to create DuckDB UDFs in the C/C++, Python and R APIs. Now that we have orrified vectors, we can offer two alternatives, one scalar one vectorized. This should also be exposed in the R/Python APIs so we can create UDFs directly from native R/Python functions (like SQLite supports). We may also implement UDF support in the SQLite3 API Wrapper, which should be straightforward.

    API Python R feature 
    opened by hannes 27
  • Windows ODBC

    Windows ODBC

    What happens?

    Compiled DuckDb from source on 64 bit Windows 11 using Visual Studio 2019. I basically followed the build process identified in the windows.yml used by github CI. I did this for both 32 and 64 bit. I then ran unittest.exe and both 32/64 bit passed 100%. I then installed the 32/64 bit ODBC drivers located in .../tools/odbc/bin (note that I had to copy the .exe and .dll files up one level to odbc in order to avoid error about not being able to find duckdb_odbc_setup.dll). Install was successful. Poking at the windows registry shows that both drivers are installed. I then attempted to query DuckDB using ADO which failed with the following error:

    [Microsoft][ODBC Driver Manager] The driver is incapable of supporting the current environment attributes.

    I discussed this on the DuckDB #general channel on Discord initially and in much more detail with @tiagokepe. I promised him that I would submit an issue with details and also provide a set of scripts that he could use to illustrate ADO to touch the ODBC driver as a test case. The scripts also include support for SQLiteODBC to illustrate how things can be done in SQLite.

    Discussions with @tiagokepe indicated that only DSN was currently supported. So it is possible that I'm not generating the connection string correctly for DSN. However, one of my goals here is to facilitate adding support for "Driver=" connection string where the database file name can be provided in the connection string via the "Database=" attribute like SQLiteODBC does.

    Whats attached:

    • odbcTest.zip - contains script files and README detailing how to use the scripts to reproduce issue.
    • duckdbodbc.txt - trace created with ODBC Data Source Administrator with failed attempt to access DuckDB using ADO
    • sqliteodbc.txt - trace created with ODBC Data Source Administrator with successful attempt to access SQLiteODBC using ADO

    To Reproduce

    See the attached .zip file with scripts that will illustrate the problem.

    Environment (please complete the following information):

    • OS: Windows 11 21H2 64 bit
    • DuckDB Version: master cloned on 7 April 2022
    • DuckDB Client: ODBC

    Before Submitting

    • [X] Have you tried this on the latest master branch?
    • [ ] Not a Python or R issue.
      • Other Platforms: You can find binaries here or compile from source.
        • I have not tried the ODBC binaries from the release page. I compiled from source.
    • [X] Have you tried the steps to reproduce? Do they include all relevant data and configuration? Does the issue you report still appear there? Yes the attached .zip file contains a pretty detailed set of scripts to reproduce the issue.

    odbcTest.zip duckdbodbc.txt sqliteodbc.txt

    opened by bucweat 26
  • ODBC-client:

    ODBC-client: "Select 42" is not working

    When I'm testing an ODBC-client with SQL-command "SELECT 42" It isn't working. Prepare, Execute and Describe are working but Fetch isn't. I will get the following error message:

    [ODBC][20419][1626450456.653113][SQLSetStmtAttr.c][265]
    		Entry:
    			Statement = 0x556143962660
    			Attribute = SQL_ATTR_ROW_BIND_TYPE
    			Value = (nil)
    			StrLen = 0
    [ODBC][20419][1626450456.653130][SQLSetStmtAttr.c][928]
    		Exit:[SQL_ERROR]
    

    And the same is happening if I try to create a table. An execution is working and table is created, but Fetching fails.

    And my setup is working with Clickhouse. I'm using unixODBC-2.3.9 with Kubuntu 21.04.

    Describe for Clickhouse for Select 42 gives s1 3 3 0 1 Select 42 50 ¯314238752 Select 42 42 4 0 0 ¯6 0 ¯6 3 0 0 And the same for DuckDB is s1 3 3 0 1 Select 42 50 ¯314068800 Select 42 42 4 0 0 4 0 4 0 0 0

    opened by kimmolinna 26
  • Issue #3079: When installed system RAM cannot be determined, default to no memory limit

    Issue #3079: When installed system RAM cannot be determined, default to no memory limit

    Fixes #3079

    This is preferable to the current behavior, as the current behavior prevents the database from being started entirely in case these methods fail. By defaulting to infinite memory instead, the user can manually set a memory limit if required.

    opened by Mytherin 0
  • OOM when reading Parquet file

    OOM when reading Parquet file

    What happens?

    It is using all available memory and is terminated by OOM.

    To Reproduce

    Allocate a machine with 32 GB RAM, like c6a.4xlarge on AWS, with Ubuntu 22.04. ssh into that machine. Run the following commands:

    sudo apt-get update
    sudo apt-get install python3-pip
    pip install duckdb
    wget 'https://datasets.clickhouse.com/hits_compatible/hits.parquet'
    

    Create the following run.py file:

    #!/usr/bin/env python3
    
    import duckdb
    import timeit
    
    con = duckdb.connect(database='my-db.duckdb', read_only=False)
    
    print("Will load the data")
    
    start = timeit.timeit()
    con.execute("CREATE TABLE hits AS SELECT * FROM parquet_scan('hits.parquet')")
    end = timeit.timeit()
    print(end - start)
    

    Make it executable:

    chmod +x run.py
    

    Run it:

    ./run.py
    

    Wait around 10 minutes...

    Will load the data
    Killed
    

    Environment (please complete the following information):

    • OS: Ubuntu 22.04
    • DuckDB Version: 0.4.0
    • DuckDB Client: Python

    Identity Disclosure:

    • Full Name: Alexey Milovidov
    • Affiliation: ClickHouse, Inc

    With OOM it cannot qualify in the ClickHouse benchmark.

    Before Submitting

    • [x] Have you tried this on the latest master branch? No.
    • Python: pip install duckdb --upgrade --pre It installs the same version 0.4.0.
    • R: I don't use R.
    • Other Platforms: I don't use other platforms.
    • [x] Have you tried the steps to reproduce? Do they include all relevant data and configuration? Does the issue you report still appear there? Yes.
    opened by alexey-milovidov 15
  • Issue #3954: Spooled Window Sinks

    Issue #3954: Spooled Window Sinks

    Convert the Sink stage of PhysicalWindow to use buffered storage instead of in-memory ChunkCollections.

    There are two performance regressions in TPC-DS (Q47 and Q57) caused by memory overflow. Since only 7% of the pages are allocated by window, it is arguable that hash joins are the real culprit. Anther fix would be to find a way to increase the memory allocation for the CI task (it seems to be 8GB at the moment).

    opened by hawkfish 0
  • Use fmt library for Value::ToString of float/double types

    Use fmt library for Value::ToString of float/double types

    This makes the Value::ToString conversion work the same as the Vector::ToString conversion for floating point types, and generally looks nicer. This is relevant because this is currently used for converting lists/structs to strings.

    New:

    D select [0.1, 0.5]::double[] as l;
    ┌────────────┐
    │     l      │
    ├────────────┤
    │ [0.1, 0.5] │
    └────────────┘
    

    Old:

    D select [0.1, 0.5]::double[] as l;
    ┌──────────────────────┐
    │          l           │
    ├──────────────────────┤
    │ [0.100000, 0.500000] │
    └──────────────────────┘
    
    opened by Mytherin 0
  • Version mismatch when loading extensions in the R client

    Version mismatch when loading extensions in the R client

    What happens?

    Attempting to load extensions with R on macOS with the CRAN released 0.4.0, I get an error about version mismatch: Extension "/Users/jkeane/.duckdb/extensions/da9ee490d/osx_amd64/tpch.duckdb_extension" version (v0.4.0) does not match DuckDB version (0.3.5-dev1410)

    To Reproduce

    > library(duckdb)
    Loading required package: DBI
    Warning message:
    package ‘duckdb’ was built under R version 4.1.2 
    > 
    > con <- dbConnect(duckdb())
    > 
    > dbSendStatement(con, "INSTALL tpch;")
    <duckdb_result c66c0 connection=c6300 statement='INSTALL tpch;'>
    > dbSendStatement(con, "LOAD tpch;")
    Error: rapi_execute: Failed to run query
    Error: Invalid Input Error: Extension "/Users/jkeane/.duckdb/extensions/da9ee490d/osx_amd64/tpch.duckdb_extension" version (v0.4.0) does not match DuckDB version (0.3.5-dev1410)
    

    Environment (please complete the following information):

    • OS: macOS
    • DuckDB Version: 0.4.0
    • DuckDB Client: R

    Identity Disclosure:

    • Full Name: Jonathan Keane
    • Affiliation: Voltron Data

    If the above is not given and is not obvious from your GitHub profile page, we might close your issue without further review. Please refer to the reasoning behind this rule if you have questions.

    Before Submitting

    • [ ] Have you tried this on the latest master branch?
    • R: install.packages("https://github.com/duckdb/duckdb/releases/download/master-builds/duckdb_r_src.tar.gz", repos = NULL) FYI, ^^^ this command fails with a 404
    • [x] Have you tried the steps to reproduce? Do they include all relevant data and configuration? Does the issue you report still appear there?
    Gold Foundation Member 
    opened by jonkeane 0
  • Fix #3942: avoid converting + to space in httplib::decode_url

    Fix #3942: avoid converting + to space in httplib::decode_url

    Fixes #3942

    The problem is that on redirect, httplib would convert any + symbol in the URL to a space, which would cause incorrect behavior. I am not sure if disabling this behavior will cause other problems, however.

    opened by Mytherin 0
Releases(v0.4.0)
  • v0.4.0(Jun 20, 2022)

    This preview release of DuckDB is named "Ferruginea" after the Andean Duck.

    Binary builds are listed below. Feedback is very welcome.

    Note: This release should be backwards-compatible wrt the on-disk storage format, but the next release may very well be incompatible again. So please don't rely on this just yet. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

    Also note: DuckDB is switching to semantic versioning. Version numbers look like this: MAJOR.MINOR.PATCH with changes to

    • MAJOR version when you make incompatible API changes,
    • MINOR version when you add functionality in a backwards compatible manner, and
    • PATCH version when you make backwards compatible bug fixes.

    However, note that because MAJOR is currently 0, "Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable."

    Below a list of changes in this release

    Major Changes & Features

    • #3767: Table function rework, parallel Julia DF scans & Python regression tests
    • #3749 & #3747: Query cancellation with CTRL-C for R and Python clients
    • #3700: Support Parallel Order-Preserving Result Set Materialization
    • #3696: Support WINDOW FILTER
    • #3620: HTTP read optimization
    • #3668: Adding alias type
    • #3435: Add support for reading newline-delimited JSON
    • #3783: Extension loading by statically linking DuckDB

    Minor Changes & Bug Fixes

    • #3905: Fix SQLancer CI
    • #3904: Fix #3896: correctly compute GroupRowsAvailable in struct reader in case a child-entry is not just a list, but a struct with only list entries
    • #3902: Fuzzer: fix sanitization of address sanitizer error
    • #3901: R: Extract DetectLogicalType() function
    • #3899: R: Check query return type instead of query type in dbFetch()
    • #3898: Issue #3880: Rebind DATE_TRUNC dates
    • #3894: Purge concurrent queue when enqueueing entries to prevent entries from piling up
    • #3892: Fix for issue #3878
    • #3889: Fix TreeRenderer crash on invalid UTF8
    • #3888: Julia Table Functions: add stack trace to errors reported
    • #3887: Correctly reset interrupted flag so verification does not overwrite original error
    • #3886: Remove the check_tread from python connection
    • #3879: Avoid title is too long error in fuzzer issue submission
    • #3877: Fix use-after-free in create view with prepared statement parameter
    • #3872: Glob with search paths
    • #3871: [Python] Making new connections to cursors and adding lock on queries over sampe connection
    • #3869: Several OSSFuzz fixes
    • #3865: Fix #3860: add support for creating foreign keys on temporary tables, and for now disable support for cross-schema foreign keys
    • #3863: Out-of-tree Extensions for Windows
    • #3862: Rework of Struct <> Dictionary Vectors, and add test_vector_types function
    • #3852: Added support for generated columns to TableCatalogEntry->ToSQL()
    • #3850: Enable EXTENSION_STATIC_BUILD for Mac too
    • #3849: [Python] Unbundle Substrait
    • #3848: Parquet: fix for fixed length byte arrays in dictionary column reader
    • #3847: Expand oss-fuzz tests to run queries and check for internal errors
    • #3846: Pass through read only flag for node connector
    • #3845: Add queries over Arrow to Python regression tests, and time entirety of TPC-H
    • #3843: [JDBC] Pass through scale and precision for decimal types from DuckDBColumnTypeMetaData
    • #3842: Allow to use custom memory allocator through DuckDB API on Windows
    • #3837: Fix overflow in generate_series and overflow in abs operator
    • #3832: Issue #3816: Parquet Time Zones
    • #3831: s3fs decode keys correctly
    • #3828: Update testthat snapshots
    • #3818: Add SQLancer to CI Fuzzing Framework
    • #3815: Out-of-tree Extension Builds
    • #3812: Fix several issues found by Valgrind
    • #3810: DuckDB.jl Julia Package History
    • #3809: Add shell: bash everywhere
    • #3802: fix ci breaking from extension PR
    • #3799: Optimisation rule for regexp_matches with literal pattern
    • #3798: Substrait: Adding more compatibility with Substrait and Ibis
    • #3792: Issue #3790: Temporal IsFinite/IsInf
    • #3791: Issue #3721: Rightshift Negative Hugeint
    • #3786: Fix binding of fully qualified view reference
    • #3785: Python: Allowing cursor to set check threads flag
    • #3784: Improve speed of ALTER TABLE ADD COLUMN
    • #3778: More node types
    • #3777: Python: Updating Stubs and Bringing Stubs tests back
    • #3776: Simplify clangd target
    • #3775: Expose dbgen speed_seed functions on header file and add missing ones
    • #3771: Increment R package version
    • #3765: Issue #3759: Node Time Zone
    • #3764: Issue #3763: List Min/Max Problems
    • #3761: Fix .import not creating missing table in CLI
    • #3760: Requiring keys provided to map to be unique
    • #3757: Fix #3756: fix issue when running blockwise NL join on dictionary vectors of structs
    • #3752: Fixed error handling for node exec()
    • #3751: Decreasing the overallocation for list aggregates
    • #3750: Fix a bug in HyperLogLog
    • #3746: Check if replacement scans don't leak memory
    • #3745: Arrow/Pandas Case Insensitive Columns
    • #3744: Treating ENUM Case in pyresult describe
    • #3739: DuckDBPyRelation: support offset argument for limit()
    • #3738: Fix #3730: avoid modifying the payload in-place in aggregate hash table, because it might be used multiple times in case of grouping sets
    • #3736: JDBC better error handling
    • #3733: Progress bar clean-up: fix thread sanitizer issue, and move progress bar code to individual operators
    • #3720: Issue #3515: Add statistical rounding
    • #3707: Fix #3702: avoid assertion that we are not storing internal entries in the file
    • #3706: Implement sqlite3_file_control and sqlite3_sleep
    • #3705: Add support for ENUM converted types in the Parquet reader
    • #3699: Zero-copy scans for non-list uncompressed segments
    • #3695: Only rename pandas columns that have duplicates
    • #3692: Compatibility with dev dbplyr
    • #3691: Fix #3690: correctly assign catalog set to default objects to avoid crash when used as dependency
    • #3681: R: Fail CI/CD on NOTEs, check examples on UBSAN, log valgrind output
    • #3677: Fuzzer fix: avoid reporting non-internal errors
    • #3676: More ccache removal from OSX Extension Release
    • #3675: More extensive SQLLogicTest testing, and temporarily disable OR pushdown
    • #3667: Handling dataframes with repeated names in columns outside the bind. Now when registering df for scan.
    • #3665: Delete correct revision in pypi cleanup script
    • #3664: try/except in pypi cleanup
    • #3663: Return PY registered objects from temporary views
    • #3662: Remove CCache from the OSX Extensions Release build
    • #3661: Automatic PyPI cleanup in CI
    • #3653: Fixing enum comparison at where clause to TRY_CAST
    • #3652: to issue#3475 optimize CSG & CMP enumeration of join order optimizer
    • #3650: Issue #3610 mem leak
    • #3648: Julia DataFrame Scan Performance Improvements & TPC-H Tests
    • #3646: ODBC: adjustments because of ADO
    • #3643: Fix for #3639, dont use string copy and value api to fill factor vector
    • #3635: Avoid running approx quantile with vsize=2
    • #3634: Fix some issues with the fuzzer auto-closing issue behavior
    • #3633: Add default type generator, move built-in types to default type class and improve error reporting for types
    • #3632: Check for div by zero in distinct stats
    • #3630: Fix issue 3611
    • #3629: S3 Minio fix
    • #3628: Issue #3625: Adding canonical guards around Arrow CData Interface
    • #3624: Add interval to DBAPI description
    • #3615: Fix #1785: correctly copy constraints in ADD COLUMN of alter table
    • #3614: Correctly propagate what a statement returns from the binder
    • #3613: SQLSmith fuzzer fixes
    • #3612: SQLite UDF fixes for writefile and friends
    • #3609: Fix operator precedence of ** in the parser
    • #3608: Turn the expression depth limit into a configureable parameter
    • #3607: Implements enter and exit functions on pyconnection to allow the use of context managers
    • #3606: Use Python 3 for configuring R
    • #3604: Equal or null optimization
    • #3603: Fixing ascii bug in histogram strings
    • #3602: Support for Arrow Timezone
    • #3598: Add auto-commit off to JDBC Connection
    • #3594: Issue #3588: Half constant BETWEEN
    • #3592: Issue #3444: Approximate quantile lists
    • #3589: Issue #1187: Virtual Generated Columns
    • #3576: More compliant with substrait and upgrading version up to 0.1.2
    • #3575: Issue #3534: Remove TIMESTAMPTZ casts
    • #3574: Issue #3430: Temporal Infinity Values
    • #3571: Fixing JNI, matching function signature exactly
    • #3569: Implicit struct_pack
    • #3564: Fix for #3562
    • #3551: Issue #2309: Update benchmark info in README.
    • #3550: ICU Extension Rework: clangd for extensions
    • #3547: Issue #3273 support multistatments for JDBC driver
    • #3546: Issue #2910: Support pandas boolean datatype
    • #3533: Exit with the correct exit code in the regression test runner
    • #3531: Correctly increment list offset on histogram aggregation
    • #3528: Julia Client - re-enable parallelism by executing tasks on dedicated Julia threads
    • #3524: Rework table-in-out function API, and move Unnest table function to table-in-out function
    • #3523: Improve HyperLogLog
    • #3519: Support in-place updates for unsigned integers
    • #3516: Issue #3497: Round DECIMAL casts
    • #3514: Issue #3453: Window Partition Collections
    • #3512: Issue #3418: Match Multiple Spaces
    • #3511: Fix #3505: Correctly handle Foreign Key syntax for when primary-key columns are not specified
    • #3507: Fix merge conflicts
    • #3504: ODBC: issue #3398
    • #3503: ODBC: issue #3478
    • #3502: Random-value generation clean-up, and move aux data in client context to separate ClientData class
    • #3500: Bug fixes for ENUMs
    • #3498: Relational API basics for R client
    • #3495: R: support structs
    • #3481: List distinct and list unique functionality
    • #3474: Unified BufferedCSVReaderOptions parsing
    • #3470: Force aggregates to have a Combine method, expose bind data in combine & general bind data clean up
    • #3469: Add duckdb.lib to Windows release package
    • #3467: ODBC: PowerBI showing column headers
    • #3464: CSVReader option 'ignore_errors'
    • #3456: Add C API functions to build list/map types and read map types
    • #3454: CMake install DLL file on Windows platform
    • #3442: ICU Extension Rework: No longer use ICU amalgamation, and update ICU data to 71
    • #3437: Implement JNI class, method and field caching
    • #3420: Expose get table names from conn to python
    • #3416: R extension loading
    • #3410: Turn SQLSmith into an extension, add CI fuzzing framework, and add automatic SQL test case reduce functionality
    • #3405: Issue 3403: Logical Type Append
    • #3389: Issue #3187: Implement strptime_icu
    • #3388: CI: Use ccache and clang-tidy-cache
    • #3386: Issue #3384: DATE_TRUNC for INTERVAL
    • #3382: Fixing python dependency memory leaks
    • #3375: Rebind prepared statements in case of type ambiguities, rather than default to VARCHAR
    • #3346: list_sort function support
    Source code(tar.gz)
    Source code(zip)
    duckdb-wasm32-nothreads.zip(6.37 MB)
    duckdb_cli-linux-amd64.zip(14.49 MB)
    duckdb_cli-linux-i386.zip(15.75 MB)
    duckdb_cli-linux-rpi.zip(7.54 MB)
    duckdb_cli-osx-universal.zip(25.23 MB)
    duckdb_cli-windows-amd64.zip(9.54 MB)
    duckdb_cli-windows-i386.zip(9.29 MB)
    duckdb_jdbc-linux-amd64.jar(14.36 MB)
    duckdb_jdbc-linux-i386.jar(15.53 MB)
    duckdb_jdbc-osx-universal.jar(25.06 MB)
    duckdb_jdbc-windows-amd64.jar(9.51 MB)
    duckdb_jdbc-windows-i386.jar(9.27 MB)
    duckdb_odbc-linux-amd64.zip(13.95 MB)
    duckdb_odbc-windows-amd64.zip(9.57 MB)
    duckdb_python_src.tar.gz(12.56 MB)
    duckdb_rest-linux-amd64.zip(13.87 MB)
    duckdb_r_src.tar.gz(2.46 MB)
    libduckdb-linux-amd64.zip(13.95 MB)
    libduckdb-linux-i386.zip(15.10 MB)
    libduckdb-linux-rpi.zip(7.48 MB)
    libduckdb-osx-universal.zip(25.20 MB)
    libduckdb-src.zip(1.91 MB)
    libduckdb-windows-amd64.zip(9.70 MB)
    libduckdb-windows-i386.zip(9.47 MB)
  • v0.3.3(Apr 11, 2022)

    This preview release of DuckDB is named "Sansaniensis" after the (regrettably extinct) Chenoanas sansaniensis.

    Binary builds are listed below. Feedback is very welcome.

    Note: Again, this release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

    Below a list of changes in this release

    Major Changes & Features

    • #2926: DuckDB SQL backend for dbplyr
    • #2970: JSON extension
    • #2998: Support explicit aggregate state export, re-combination and finalisation
    • #3069: S3 writes and #3225: S3 file glob
    • #3092: Basic UDF support for Node API
    • #3109: Storage dictionary compression
    • #3111: Simple filtered aggregates
    • #3165: Add support for a DESCRIBE statement that gives a summary of all tables
    • #3178: 1-based indexing for lists and strings
    • #3195: Add support for FOREIGN KEY
    • #3253: Julia Client & C API Extensions
    • #3292: Support NaN and Infinity in floating point columns

    Minor Changes & Bug Fixes

    • #2954: JDBC enable usage of LocalDateTime via get/setObject
    • #2985: Issue #2590: Add overwrite flag to CSV copy, overwrite only if query completes
    • #3006: JDBC BigDecimal support
    • #3007: Feature: Add support for Excel text format (Update #2996)
    • #3010: R: Arrow timestamps in seconds, milliseconds and nanoseconds
    • #3027: Allow literal option for regex
    • #3030: Macros for floored division and modulo
    • #3034: Substrait Installable Extension
    • #3038: Issue #3037: DATE + TIME
    • #3045: fix for STRING_AGG(...) failing (vector type mismatch) assertion when used with DISTINCT and ORDER BY inside STRING_AGG.
    • #3050: R-pkg: cpp11-ify
    • #3051: Enable printing of EXPLAIN query trees in the R client
    • #3060: Issue #3056: Null list scatter
    • #3065: Implementation of list_contains
    • #3066: Report dlopen/dlsym errors in extension load
    • #3067: ODBC: Many changes
    • #3071: c-api: support decimal and prevent invalid type throws
    • #3072: Add CMake setting to disable linking of extensions
    • #3077: Issue 2498: Consistent NULL hashing
    • #3084: Hmb1 select macro feature mr
    • #3085: First batch of aggregation functions for python rapi
    • #3087: Fix incorrect link for testing docs
    • #3088: Add LIST_EXTRACT support for several missing types (including booleans)
    • #3090: Fix for Arrow Timezone CI Fail
    • #3093: Test/add parser error on missing newline
    • #3097: Fix remaining winsock error
    • #3098: Round-trippable Expression ToString()
    • #3101: Issue #3100: MAKE_DATE struct variant
    • #3102: Add flatten function for nested list
    • #3107: Allow multiple statements in the R-client
    • #3112: Issue #1423: PiecewiseMergeJoin multiple predicates
    • #3115: ODBC: SQLGetDescRec and SQLSetDescRec
    • #3116: NodeJS Windows CI Fix Attempt
    • #3120: Fix #3119: correctly perform case insensitive comparisons in default function/view/schema creation
    • #3121: Fix #3108: support ILIKE ESCAPE
    • #3123: Issue #3020: Unify column names of DESCRIBE and SUMMARIZE
    • #3124: Add Alias to projected columns
    • #3125: Adds support for the REPLACE keyword in CREATE TABLE AS ... SELECT (CTAS) statements
    • #3126: BLOB support for aggregate state combine
    • #3139: More Python Relational API Functions
    • #3142: Fix type hints for query_df
    • #3147: Python: Relation dependency on Connection
    • #3148: Alter Type of column from varchar to enum
    • #3151: Support trailing commas in many lists in the parser
    • #3154: JDBC - Bugfix - Negative timestamp fix
    • #3156: JDBC - Add timestamp with timezone support
    • #3158: Enable DISABLE_VPTR_SANITIZER by default on M1
    • #3161: Implementation of unnest(null), list_position, rewrites
    • #3162: Add support for list parameters in the Python API
    • #3163: ODBC: Diagnostic Feature
    • #3166: Move test_group_by_parallel out of the coverage tests
    • #3171: Fix #3169: verify that WAL exists in PRAGMA database_size
    • #3173: Adding chunk size parameter to functions that return arrow objects.
    • #3174: Correctly zero-initialize pg_parser allocation heap to prevent potential corruption in clean up of parser state of SQL strings
    • #3179: Change pipe so it doesnt print on terminal
    • #3180: Fix for build error of R package on Windows
    • #3190: Fix Python clean.sh: avoid deleting all locally installed libraries and instead only remove installed DuckDB libraries
    • #3191: Returning feature for INSERT
    • #3192: Tear down connections
    • #3196: linking fixes for extensions
    • #3197: Fix convert uuid to arrow str error
    • #3199: Dbplyr-backend SQL translation of is.na() must use only IS NULL
    • #3201: Enable universal builds for OSX
    • #3208: numeric md5 functions
    • #3209: JDBC - Fix missing metadata
    • #3213: Making the deliminator more flexible and Q 02/17/20 of TPC-H for Substrait
    • #3214: Extension linking fix
    • #3218: Fixed empty list aggregates
    • #3219: Issue #1423: IEJoin Implementation
    • #3220: Fix for #3200
    • #3221: FIX for parquet reader on diff files
    • #3224: feat: expose from_substrait in python package
    • #3226: ODBC: Windows setup
    • #3230: Fix for #3215
    • #3231: CodeCov apparently does not like target anymore, + validate codecov configuration in CI
    • #3232: Fix #3223: Prune trees with LIMIT 0
    • #3233: Fix #3205: implement skip for struct and list column readers
    • #3234: Fix #3222: avoid int overflow in RleBpDecoder
    • #3235: Removing std::binary_function because its deprecated in cpp11
    • #3238: Parquet globbing: Better support for schema evolution
    • #3239: Properly send mapped function on RAPI
    • #3244: Returning feature for update and delete statements
    • #3245: test: prevent master ci from being canceled
    • #3251: Improving CI performance
    • #3255: Adding check_same_thread option to py connector
    • #3256: ci: restructure to run format/tidy/codecov for python
    • #3263: JDBC - Enable useage of ENUM type
    • #3264: Allow the use of native replacement scan of parquet/csv files with the dbplyr-backend
    • #3266: Fix #3260: if a schema name is provided, pass along the schema name and table name to the replacement scan
    • #3268: Add python module constants from PEP249
    • #3270: python extension loading tests
    • #3274: Implementation of the list aggregate function
    • #3276: Properly resizing DuckDB batches that reference arrow batches
    • #3281: ODBC: LibreOffice on Linux
    • #3287: Several Julia API enhancements
    • #3289: ODBC: windows installer has to copy and pass program parameters
    • #3293: Issue #3262: Nested comparison fixes
    • #3295: Allow strftime arguments to be specified in both orders
    • #3299: [Arrow] Read Record Batch Reader and Scanners
    • #3301: Use FieldWriter/FieldReader in Checkpoint Manager
    • #3303: Add benchmark_runner based regression test, and remove random engine from cycle counter
    • #3305: Fix #3304: correctly trigger old result-set materialization prior in duckdb_value_is_null
    • #3307: Fix #3271: correctly check for negative limit and offset
    • #3308: Cleanup some unused include
    • #3311: Fix #3272: avoid incorrectly moving LIMIT to before the ORDER clause in certain cases
    • #3312: Issue #3290: Histogram Temporal Bindings
    • #3313: Issue #3275: Global Operator State
    • #3314: Issue #3262: Dead Code Removal
    • #3318: R bug-fixes: Pipes in tests and silence R NOTE
    • #3323: Fix #3291: delete root entries after a catalog entry is deleted and no more transactions can reference it
    • #3328: Fix #3294: initialize validity mask to correct size in placeholder code
    • #3329: Fix use after free bug in local storage
    • #3331: Add automatic issue labeler
    • #3335: #3324 Throw error instead of crashing when misusing prepared statements
    • #3338: Issue #3298: Nested Unflat MinMax
    • #3339: Add a create_value for strings to the Julia API
    • #3342: Issue #1423: IEJoin Performance Improvements
    • #3343: Issue #3118: Non-string Formats
    • #3355: Fix #3349: correctly handle empty table case in grouping set
    • #3356: Fix #3350: correctly update statistics after a SINGLE join, since SINGLE joins may introduce NULL values
    • #3357: Fix #3351: avoid double-binding functions in subqueries after an initial binding error
    • #3358: Fix #3352: fix several bugs with index selection for verifying foreign key constraints
    • #3359: Fix #3353: check if any results are returned in sqlite api wrapper before looking at the chunk
    • #3360: Fix #3354: add missing recursive CTE node traversal in correlated subquery flattening
    • #3362: ODBC: unixodbc_setup.sh
    • #3363: Fix #3361: correctly handle overflows in sequences with cycles
    • #3369: Fix #3367: correctly detect overflow in statistics propagation for ORDER BY
    • #3370: Fix #3366: check for invalid double values in progress bar
    • #3372: Fix #3365: correctly handle overflows in left-shifts
    • #3376: Fix Python Windows CI
    • #3378: Correctly handle rowid scans in Julia DataFrame scan (for COUNT(*))
    • #3380: ArgMinMax: correctly manage memory of strings in both values and arguments
    • #3381: Python extension loading
    • #3383: ODBC: unixodbc_setup.sh usage message
    • #3399: removed -k param for gzip
    • #3406: Install AWS CLI in CentOS Extension
    Source code(tar.gz)
    Source code(zip)
    duckdb-wasm32-nothreads.zip(6.15 MB)
    duckdb_cli-linux-amd64.zip(11.48 MB)
    duckdb_cli-linux-i386.zip(12.76 MB)
    duckdb_cli-linux-rpi.zip(7.35 MB)
    duckdb_cli-osx-universal.zip(20.41 MB)
    duckdb_cli-windows-amd64.zip(6.94 MB)
    duckdb_cli-windows-i386.zip(6.57 MB)
    duckdb_jdbc-linux-amd64.jar(11.36 MB)
    duckdb_jdbc-linux-i386.jar(12.55 MB)
    duckdb_jdbc-osx-universal.jar(20.22 MB)
    duckdb_jdbc-windows-amd64.jar(6.90 MB)
    duckdb_jdbc-windows-i386.jar(6.53 MB)
    duckdb_odbc-linux-amd64.zip(10.95 MB)
    duckdb_odbc-windows-amd64.zip(6.96 MB)
    duckdb_python_src.tar.gz(10.81 MB)
    duckdb_rest-linux-amd64.zip(10.86 MB)
    duckdb_r_src.tar.gz(2.40 MB)
    libduckdb-linux-amd64.zip(10.94 MB)
    libduckdb-linux-i386.zip(12.12 MB)
    libduckdb-linux-rpi.zip(7.30 MB)
    libduckdb-src.zip(1.84 MB)
    libduckdb-windows-amd64.zip(6.99 MB)
    libduckdb-windows-i386.zip(6.64 MB)
  • v0.3.2(Feb 7, 2022)

    This preview release of DuckDB is named "Gibberifrons" after the Sunda teal

    Binary builds are listed below. Feedback is very welcome.

    Note: Again, this release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

    Below a list of changes in this release

    Features

    • #2797: Add interface support for incremental/deferred query execution in main thread
    • #2682: Issue #561: Time Zone Support, #2703: #561: Time Zone Foundations
    • #2578: Enable support for multi-dot column references
    • #2613: Add support for EXPLAIN ANALYZE
    • #2569: Support installation of extensions from central repository
    • #2843: Parquet Writer: Support writing all types (test_all_types), and write column statistics, #2838: Add support for reading and writing the MAP type to the Parquet reader/writer, #2832: Parquet Writer Rework: Support complex types, #2597: Extend Parquet writer support for UNSIGNED types, various timestamp types, and correctly set converted types in more cases

    Minor Changes & Bug Fixes

    • #3042: Issue #3029: Prevent CURRENT_QUERY folding
    • #3041: Fix #3017: detect recursive view construction and throw an appropriate error
    • #3040: Fix #3015: fix edge case issue with many null values in physical Top N
    • #3039: Update Java DuckDBAppender to allow appending null values - fixes issue 3035
    • #3028: Install covr from main development branch
    • #3026: Issue #2965: CTE parameter binding
    • #3024: Issue #3023: Simple filtered aggregates
    • #3021: Move install_extension test to test_slow
    • #3016: Issue #2923: Quote ENUM types
    • #3014: Issue #2908: UTF8 BOM Headers
    • #3013: Fix #3005: correctly normalify vector in array_slice
    • #3012: Fix #2999: Support ANY_JOIN in flattening correlated subqueries
    • #3011: Fix #2986: correctly copy old data over when calling repalloc in parser
    • #3004: Fix #2997: allow maximum CSV line size to be configurable
    • #3001: Document installation of dependencies in Python package README
    • #3000: Lookup parent frames for replacement scans
    • #2983: Fix #2975: fix off-by-one in transform of string constant to decimal in case of large negative numbers
    • #2982: Python API - allow duckdb.query to run arbitrary queries
    • #2980: Fix dead link in readme
    • #2979: Fixing Python CI
    • #2978: Ensure that users cant run concurrent queries using cursor()
    • #2974: Use cpp11 for rpkg
    • #2973: ODBC: SQLGetTypeInfo, SQLTables, and SQLColumns
    • #2971: Arrow use_async argument deprecation
    • #2969: FieldWriter/FieldReader for Backwards/Forwards Compatible Storage
    • #2963: Fixing parquet scan with or filters (issue #2955)
    • #2957: Fixing wrongful release of arrow arrays
    • #2956: fix: use selection vector to ensure ids are ordered
    • #2953: Fix cancellation configuration
    • #2952: Check coverage for R
    • #2951: Adding Cross Product Relation
    • #2949: Update copyright info to name DuckDB Foundation
    • #2946: Style R code
    • #2943: Disable arrow integration tests on Windows
    • #2941: Prefix inlined third party libraries with duckdb_
    • #2940: CMakeLists.txt: Add 'delayimp.lib' to delay-loaded DLL on MSVC
    • #2939: src/include/duckdb/common/assert.hpp: Added winapi
    • #2937: Install Python 3.7 from source on Ubuntu 16
    • #2935: adding the v to the amalgamation version string
    • #2930: list_slice test fix
    • #2925: Enable building the HTTPFS extension for both Windows and OSX
    • #2924: Add Node 17 to build factory
    • #2921: Fix for array_slice when end index is out of bounds
    • #2920: ODBC: cursor functions
    • #2919: Preserve Identifier Case by default, rather than lower-casing all unquoted identifiers
    • #2918: Add left join type to python relational API
    • #2917: list_slice alias for array_slice
    • #2912: Fixing Arrow Stream Output Error
    • #2906: not export deletes to allow crosscompile
    • #2905: Use difftime_str instead of hms class
    • #2904: Use correct hms value
    • #2903: Robust cancellation via concurrency
    • #2901: Minor tweaks in R code
    • #2899: Support for GROUP BY ALL/ORDER BY ALL
    • #2895: Add duckdb_keywords function
    • #2894: OSS Fuzz Fixes
    • #2890: ODBC driver assets
    • #2888: Add JDBC's setTimestamp method
    • #2886: Use double to store scale factor in TPC-H answers
    • #2885: Better support for Parquet 2 Page Layout
    • #2880: fix python profile html generator to support updated JSON format.
    • #2871: Issue #1423: Refactor PiecewiseMergeJoin
    • #2870: bug fix for order by header
    • #2869: Value Rework: Make all members private and use accessors
    • #2867: test: fixed typo for decimal type in test_all_types
    • #2865: Issue #2782: Non-Gregorian Calendars
    • #2864: C API: Deprecate direct access into duckdb_result and duckdb_column structs
    • #2863: ODBC: conformance core level of SQLAllocHandle, SQLFreeStmt, SQLGetDiagRec, SQLSetStmtAttr, and descriptors
    • #2856: Issue #2842: Implement make_date/time/timestamp
    • #2855: right case for winsock2.h
    • #2854: Issue #2831: Disable WINDOW FILTER
    • #2852: Issue #2827: Postgres datepart compatibility
    • #2851: When using Replace, keep the alias of the original column
    • #2850: Avoid reading past the end of the string when parsing a time as part of an interval
    • #2848: Fix #2847: Write parquet files to test dir
    • #2846: Issue #2780: Remove DATETZ type
    • #2845: Turn FileSync into a nop in the PipeFileSystem, and add clear error message when ParquetReader is used to read from a FIFO stream (e.g. /dev/stdin)
    • #2844: Support read_csv_auto from /dev/stdin
    • #2837: Fix potential use after move detected by linter, and add DISABLE_DUCKDB_REMOTE_INSTALL define
    • #2835: Issue #2834: ICU BindAdapterData::Equals
    • #2833: CI Fixes, TSAN Fix
    • #2830: Fix #2828: setup.py BUILD_HTTPFS does not work
    • #2825: Fix #2823: Correctly alter cardinality estimation in LIMIT/SAMPLE clauses
    • #2822: Issue #2779: DATE_PART structs
    • #2819: add INTERVAL support to node.js
    • #2818: Adding Parquet extension to node module
    • #2817: R: Make method definition more similar to S3
    • #2808: Revert stack-overflow detection back to having a maximum (expression) depth in the transformer
    • #2807: Add discord badge
    • #2806: Refactor SQLLogicTest
    • #2802: R-Dataset: Add flag to enable async scanner
    • #2801: Add support for list equivalent of range/generate_series with timestamp+interval
    • #2800: Fix #2749: avoid copying subquery in BETWEEN expressions
    • #2799: Fix #2791: allocate data and mask locations to correctly handle counts > vector_size in the row_gather
    • #2798: Fix issue in perfect hash join when (max - min) does not fit into an INT64
    • #2796: Addition of QUALIFY clause
    • #2794: Add Extension Install CI tests, and fix various issues found through this process
    • #2793: Enum Functions
    • #2792: PhysicalStreamingWindow operator
    • #2788: Issue #2778: Missing date parts
    • #2784: adds BOOLEAN support to node.js bindings
    • #2773: Fix #2761: correctly check that stderr is pointing to a terminal
    • #2770: Fix a bug in the sqlite3_api_wrapper that resulted in not correctly reporting why a database could not be opened
    • #2767: Issue #561: Implement ICU AGE
    • #2765: Add Connection::GetTableNames method to C++ API that allows you to extract the required table names from a query
    • #2760: Issue #561: Implement ICU DATEDIFF
    • #2759: Fix string constructor usage
    • #2757: Extension dashes to underscores
    • #2756: Issue #561: Implement ICU DATESUB
    • #2753: Python - Test All Types
    • #2751: Fix #2750: check enable_external_access flag in more locations
    • #2748: Cleanup pointer swizzling code
    • #2746: Fix #2745: correctly detect when a RECURSIVE CTE does not contain a reference to itself (i.e. is not a recursive CTE at all)
    • #2744: C++17 warning fixes, plus CI tests for compiling (parquet) amalgamation with C++17
    • #2742: Common: typo and remove unused files
    • #2739: Add test_all_types function
    • #2738: GH Actions: avoid upload on master, and try to fix codecov failures on master
    • #2737: Typo: Rename Alises to Aliases
    • #2732: Tests for Python + #1732
    • #2731: Pushing down OR filters
    • #2730: Issue #561: ICU Date addition
    • #2729: Add duckdb_functions table function
    • #2727: RAII for SortedBlock
    • #2725: Windows: Remove OVERLAPPED IO flag, it is not required and seems to cause concurrency problems
    • #2723: Fix #2471: correctly handle offset passed by ::UpdateSegment, and handle it earlier to clean up code
    • #2722: Infer COPY TO format from file extension
    • #2721: Update of PERCENT keyword in the LIMIT clause(#2671)
    • #2719: Fix #2713: correctly bind multi-part column references in correlated subqueries
    • #2718: Add "position" as an alias to the "instr" function
    • #2712: Use and_kleene for Arrow filters
    • #2711: Fix CSE optimizer: keep around expressions as they might be referenced in the expression_map
    • #2710: Modify LEAST/GREATEST to ignore NULL values
    • #2708: Fix #2701: Handle VALUES lists in correlated subqueries
    • #2706: Ignore cancel request on master
    • #2702: Rename snappy namespace to duckdb_snappy, and enable Parquet extension for the exported symbol checker
    • #2697: Support reading of ZSTD files, and add support for writing GZIP and ZSTD files
    • #2696: FetchDF for nested types (Lists, Maps and Structs)
    • #2693: Fix #2663: correctly implement EXTRACT(EPOCH from TIME) as seconds since midnight
    • #2692: Fix #2678: Fix undefined behavior for sequences close to INT64 min/INT64 max
    • #2691: Correctly handle synchronous I/O being returned from Windows API
    • #2690: Use templated memcpy/memcmp more
    • #2689: Reduce memory footprint of Python/R compilation by default by disabling unity builds unless DUCKDB_BUILD_UNITY flag is enabled
    • #2686: Fix #2685: prevent CSE optimizer from causing short-circuiting issues, and add disable_optimizers setting
    • #2684: Python 3.10 builds
    • #2681: Benchmark/test format cleanup
    • #2679: Bitpacking storage compression
    • #2673: remove extra semicolon.
    • #2665: Merge arrow_register into register function
    • #2662: Fix #2656: correctly transform DISTINCT with ORDER BY into DISTINCT ON
    • #2660: Issue #2614: Wide windows
    • #2659: Fix #2652: Make struct fields case insensitive
    • #2658: Fix various Windows unicode issues
    • #2657: Initializing matchers to avoid valgrind complaints
    • #2655: Add templated memcpy/memcmp
    • #2650: Fix bug in parquet reader causing list columns to be parsed incorrectly (#2557)
    • #2648: Fix #686: remove hard-coded memory limit in parser and fix error message propagation from exceptions thrown in parser
    • #2644: Fix #2641: correctly handle tab delimiters in COPY TO/FROM
    • #2642: Issue #2552: SUBSTR BIGINT
    • #2639: Fix #2586: correct semantics for extract(second, ...) from intervals
    • #2636: Hashing enum values (Enum comparison bug fix)
    • #2635: Fix for R factor scans
    • #2631: ODBC: Refactoring Parameter Descriptor
    • #2630: Try to Cast Enums to other types
    • #2626: Escape column names in dbWriteTable() Fixes #2622
    • #2623: Fix #2612: Correctly check that default is set on copy of SetDefaultInfo
    • #2611: Multithreaded Python
    • #2609: Configuration Rework & Cleanup
    • #2602: Adding pragma option for parquet binary as string
    • #2583: Issue #2549: Support IGNORE NULLS
    • #2576: Add generate_subscripts macro
    • #2526: Sequence ownership
    Source code(tar.gz)
    Source code(zip)
    duckdb-wasm32-nothreads.zip(6.36 MB)
    duckdb_cli-linux-amd64.zip(11.48 MB)
    duckdb_cli-linux-i386.zip(12.89 MB)
    duckdb_cli-linux-rpi.zip(7.72 MB)
    duckdb_cli-osx-amd64.zip(11.00 MB)
    duckdb_cli-windows-amd64.zip(6.66 MB)
    duckdb_cli-windows-i386.zip(6.28 MB)
    duckdb_jdbc-linux-amd64.jar(11.35 MB)
    duckdb_jdbc-linux-i386.jar(12.67 MB)
    duckdb_jdbc-osx-amd64.jar(10.92 MB)
    duckdb_jdbc-windows-amd64.jar(6.61 MB)
    duckdb_jdbc-windows-i386.jar(6.24 MB)
    duckdb_odbc-linux-amd64.zip(10.84 MB)
    duckdb_odbc-windows-amd64.zip(6.63 MB)
    duckdb_python_src.tar.gz(8.57 MB)
    duckdb_rest-linux-amd64.zip(10.85 MB)
    duckdb_r_src.tar.gz(2.28 MB)
    libduckdb-linux-amd64.zip(10.90 MB)
    libduckdb-linux-i386.zip(12.21 MB)
    libduckdb-linux-rpi.zip(7.64 MB)
    libduckdb-osx-amd64.zip(11.01 MB)
    libduckdb-src.zip(1.73 MB)
    libduckdb-windows-amd64.zip(6.69 MB)
    libduckdb-windows-i386.zip(6.32 MB)
  • v0.3.1(Nov 16, 2021)

    This preview release of DuckDB is named "Spectabilis" after the King Eider

    Binary builds are listed below. Feedback is very welcome.

    Note: Again, this release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

    Below a list of changes in this release

    Features

    • #2393: Switch to Push-Based Execution Model
    • #2417: Add support for GROUPING SETS, ROLLUP, CUBE and GROUPING/GROUPING_ID
    • #2347: Support for ENUM Types & #2404: Native mapping between R factors and DuckDB ENUMs
    • #2419: Allow WHERE clause referring aliases defined in SELECT clause
    • #2473: Adding Compression Option for Column Definitions to SQL Parser
    • #2489: Implement MAD (Moving Absolute Deviation) Aggregate
    • #2520: Add LIST_CONCAT and LIST_APPEND functions
    • #2522: MSD (Most Significant Digit) Radix Sort
    • #2529: Implement REGEXP_EXTRACT
    • #2482: Add support for EVEN
    • #2555: Adding BINARY_AS_STRING parameter to the parquet scan

    Minor Changes & Bug Fixes

    • #2377: Fix current_schema() and current_schemas()
    • #2380: Add tests for "did you mean" error message
    • #2381: Let FTS index creation respect the current schema.
    • #2382: Dropping support to Python 2
    • #2385: BLOB support for JDBC
    • #2389: Replace getattr on PyBind11 classes with individual properties.
    • #2390: Moving big categorical tests to tests_slow folder
    • #2394: Add SET s3_endpoint support for in-house Ceph
    • #2397: Add Python .pyi stubs
    • #2402: GH Actions Upload: retry asset upload with timeout
    • #2403: Not altering original DF when renaming columns in the binder
    • #2405: Fix bug with enum::varchar cast on null values
    • #2408: Rewrite Arrow table register for R using replacement scans
    • #2409: Adding dependency on Enum Types -> Tables
    • #2412: Updated src readme to state we use push-based execution.
    • #2413: Fix for #2411
    • #2421: Fix #2407: use correct template parameters for DATE in arg_min/arg_max
    • #2423: Fix #2416: fix binding issues related to binding parameters, null values, etc in list_extract and array_length
    • #2424: Issue #2388: QUANTILE_DISC for VARCHAR
    • #2430: Fix for #2426
    • #2431: More fixes for #2416
    • #2434: Issue #2388: Moving VARCHAR QUANTILE_DISC
    • #2437: implement GEN_RANDOM_UUID
    • #2438: Issue #2432: PERCENTILE_XXXX ignores DESC
    • #2439: fix: pass absolute path to System.load() in Java
    • #2444: Fix #2440: correctly report run-time errors in Python client
    • #2445: Several OSS Fuzz Fixes
    • #2448: Move to codecov v2, and use add_library for vector operations for low RAM machines
    • #2449: Enum to Enum Comparisons
    • #2451: Hooold the loooock for Python Strings under Dataframe Object Columns
    • #2453: Fix when getting single values from ENUMs
    • #2455: Doc Improve: Trying to Update doc in QueryResult
    • #2456: Add --test-dir parameter to unittest so we can test out-of-tree extensions with it
    • #2462: Fix #2452: Implement Coalesce instead of rewriting to CASE chain
    • #2463: More OSS Fuzz fixes
    • #2474: Allow Fetch of chunks containing a multiple of vector sizes for the Arrow Record Batch Reader
    • #2476: Really holding the lock this time
    • #2477: Sorted aggregate: only re-order when ordering count > 0
    • #2485: Benchmarks: Handle comparisons for values that do not have a VARCHAR ->TYPE cast (e.g. complex/list types)
    • #2487: Conditionally define UNLIKELY in Thrift
    • #2488: ODBC: fetching the first chunk in SQLExecute
    • #2490: Clean up RadixSort code
    • #2491: These tests are now passing with arrow 6
    • #2494: Emit full vectors from VALUES lists instead of emitting individual tuples
    • #2497: Upgrade Catch to v2.13.7
    • #2500: Fix nested string order
    • #2501: Add CIFuzz action
    • #2503: Fix for py string conversion on large strings
    • #2504: More precision for SUM and AVG
    • #2517: Move Kahan sum to separate method (fsum, sum_kahan)
    • #2521: Issue #2515: Windowed quantile list
    • #2527: testing: Add oss-fuzz fuzzer
    • #2536: Fix #2518: in read_csv_auto don't override names if names have been provided
    • #2537: Fix #2531: in recursive CTE avoid waiting for events to finish if an event has thrown an error
    • #2539: Restructuring CI Workflow
    • #2542: Issue #2530: Reset windowed lists
    • #2550: ODBC: Running PSQLODBC tests on Win64
    • #2556: Fixed directory separator bug
    • #2558: Fixing positional reference binding in ORDER BY clause
    • #2559: Issue #2552: General ordered aggregates
    • #2561: Fix master CI: Python workflow needs auth tokens for deployment
    • #2563: Move ExtensionHelper into main DuckDB Class
    • #2564: R Client: Moving UTF encoding to R to avoid multithreading issues
    • #2567: Fix #2538: crash in CSV auto-detect when reading ZSTD data
    • #2573: Move HTTPFS builds to separate test to avoid deploying them by default on Linux
    • #2574: Naming optimizer-created aggregates so plans are interpretable
    • #2579: Support to Arrow 6
    • #2580: Check magic bytes before checksum when opening a DuckDB database file
    • #2585: Fix #2584: correctly handle edge cases for bigger than 1 increments in range table function
    • #2587: Replacement Scans for Arrow Objects
    • #2592: Fix #2577: Rework case statement to avoid rewrite into nested binary cases
    • #2593: Fix #2591: avoid using ungrouped aggregate for non-combineable aggregates
    • #2594: Fix #2588: timestamp -> date cast is not invertible
    • #2595: Fix #2543: case insensitive replacement scans
    • #2598: OSS Fuzz Fixes
    • #2603: The asset upload script for releases was broken somehow
    • #2605: Clean up reupload by splitting it into two functions
    • #2604: Fix #2599: maintain correct dependencies between UNION ALL nodes so that output is deterministic/in-line with what a sequential execution would produce
    Source code(tar.gz)
    Source code(zip)
    duckdb-wasm32-nothreads.zip(5.78 MB)
    duckdb_cli-linux-amd64.zip(11.70 MB)
    duckdb_cli-linux-i386.zip(12.27 MB)
    duckdb_cli-linux-rpi.zip(7.48 MB)
    duckdb_cli-osx-amd64.zip(11.18 MB)
    duckdb_cli-windows-amd64.zip(5.97 MB)
    duckdb_cli-windows-i386.zip(5.63 MB)
    duckdb_jdbc-linux-amd64.jar(11.57 MB)
    duckdb_jdbc-linux-i386.jar(12.06 MB)
    duckdb_jdbc-osx-amd64.jar(11.10 MB)
    duckdb_jdbc-windows-amd64.jar(5.94 MB)
    duckdb_jdbc-windows-i386.jar(5.58 MB)
    duckdb_python_src.tar.gz(8.43 MB)
    duckdb_rest-linux-amd64.zip(11.17 MB)
    duckdb_r_src.tar.gz(2.13 MB)
    libduckdb-linux-amd64.zip(11.11 MB)
    libduckdb-linux-i386.zip(11.58 MB)
    libduckdb-linux-rpi.zip(7.40 MB)
    libduckdb-osx-amd64.zip(11.17 MB)
    libduckdb-src.zip(1.62 MB)
    libduckdb-windows-amd64.zip(6.00 MB)
    libduckdb-windows-i386.zip(5.65 MB)
  • v0.3.0(Oct 6, 2021)

    This preview release of DuckDB is named "Gracilis" after the Grey Teal

    Binary builds are listed below. Feedback is very welcome.

    Note: Again, this release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

    This release contains a novel join method, the #1959: Perfect Hash Join. Otherwise there are many improvements and bug fixes however, a list is below:

    • #2377: Fix current_schema() and current_schemas()
    • #2371: Installing pandoc so R pkg can be fully checked
    • #2369: More CI fixes
    • #2361: ODBC: First version Winsetup
    • #2360: Issue #2348: Support bankers rounding as default function
    • #2359: Implement UUID data type
    • #2358: Fixes minor flag comment
    • #2357: Issue #2351: Ordered aggregate transformation
    • #2356: Issue #2286: Numeric SUMMARIZE stats
    • #2353: Get rid of a couple of Clang warnings.
    • #2346: Avoid re-using RE2 regex between threads, since RE2 regex objects have locks internally
    • #2328: CI Fixes
    • #2321: Issue #1998: Exact Timestamp Subtraction
    • #2320: Change SET's default scope from GLOBAL to (PG-compatible) SESSION.
    • #2319: Fix #2315: correctly detect that index joins cannot be used for multi-column indexes, and clean up TPC-DS extension
    • #2318: Remove extra semicolon.
    • #2317: Support SET SCHEMA and SET SEARCH_PATH
    • #2316: Fix for #2304
    • #2314: Fix #2313: No Out of Range Error in Index Benchmark
    • #2311: Issue #2310: Create Index Benchmark
    • #2306: Windows (64 bits) and -DDISABLE_UNITY=1
    • #2302: Fix #2301: ART Leaf Node shrink
    • #2300: Fix #2293: Correctly escape all special characters (quotes, newlines, tabs, etc) in JSON output of query profiler
    • #2299: Fix #2296: Avoid requesting O_RDWR permissions when we only need O_WRONLY so we can write to FIFO streams
    • #2298: Fix #2294: In CSV reader correctly generate column names with many columns
    • #2297: Issue #2241: Transacted Index Reinsert
    • #2290: Fix #2289: align default continue prompt
    • #2287: ODBC: list catalog, schema and test_blob
    • #2284: Make S3 credentials session scoped
    • #2282: Fix for bug #2281
    • #2280: Initial support to read lists from R client
    • #2279: Fix #2277: add support for lists of structs to LIST_EXTRACT
    • #2276: Add support for EXCLUDE and REPLACE clauses
    • #2275: Run only CRAN tests for valgrind
    • #2274: Fix #2267: For structs, get the required amount of rows from a non-list child if there is one
    • #2272: Rename force_parallelism to verify_parallelism
    • #2271: Make regression run parallel with 2 Threads
    • #2266: A refactoring around FileSystem
    • #2265: Allow optional extensions when building the R package
    • #2263: Regression Test: TPC-DS/H20AI and other adjustments
    • #2262: Fix #2261: add support for filters pushed down into decimal columns in Parquet files
    • #2259: Fix a TSAN error for test/sql/window/test_partition_flushing.test
    • #2255: Make sorting even faster
    • #2254: More descriptive out-of-memory error when db is launched in-memory
    • #2253: Regression Tests
    • #2251: Changes from CRAN 0.2.9 release
    • #2234: Add support for S3 session token (STS)
    • #2228: Date functions on Windows
    Source code(tar.gz)
    Source code(zip)
    duckdb-wasm32-nothreads.zip(5.58 MB)
    duckdb_cli-linux-amd64.zip(11.59 MB)
    duckdb_cli-linux-i386.zip(11.90 MB)
    duckdb_cli-linux-rpi.zip(7.21 MB)
    duckdb_cli-osx-amd64.zip(10.99 MB)
    duckdb_cli-windows-amd64.zip(5.87 MB)
    duckdb_cli-windows-i386.zip(5.52 MB)
    duckdb_jdbc-linux-amd64.jar(6.89 MB)
    duckdb_jdbc-linux-i386.jar(8.12 MB)
    duckdb_jdbc-osx-amd64.jar(6.58 MB)
    duckdb_jdbc-windows-amd64.jar(3.17 MB)
    duckdb_jdbc-windows-i386.jar(2.88 MB)
    duckdb_python_src.tar.gz(8.40 MB)
    duckdb_rest-linux-amd64.zip(10.96 MB)
    duckdb_r_src.tar.gz(2.11 MB)
    libduckdb-linux-amd64.zip(5.86 MB)
    libduckdb-linux-i386.zip(7.09 MB)
    libduckdb-linux-rpi.zip(6.29 MB)
    libduckdb-osx-amd64.zip(6.14 MB)
    libduckdb-src.zip(1.60 MB)
    libduckdb-windows-amd64.zip(2.99 MB)
    libduckdb-windows-i386.zip(2.72 MB)
  • v0.2.9(Sep 6, 2021)

    This preview release of DuckDB is named "Platyrhynchos" after the very well-known Mallard, πλατυρυγχος meaning "broad-billed".

    Binary builds are listed below. Feedback is very welcome.

    Note: Again, this release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

    Major changes (not listing minor bug fixes and small changes):

    Storage

    • #2099: Persistent Storage Compression Framework & RLE compression for numeric columns
    • #2157: Multi-Occupancy Blocks in the Storage

    SQL

    • #2247: Support session and global SET statement variable scopes.
    • #2230: Full Case Insensitivity in the Binder & Catalog
    • #2208: Allow duplicate column names in subqueries/CREATE TABLE AS, similar to SQLite
    • #2206: Allow unnamed subqueries
    • #2189: Add support for SUMMARIZE of SQL statement/table
    • #2158: ORDER BY aggregates
    • #2171: Implement LAST
    • #2146: Support for RANGE and ARRAY_LENGTH scalar functions
    • #2133: Implement DATESUB & #2090: Implement DATEDIFF
    • #2128: Fall back to VARCHAR when the type of a prepared statement parameter is ambiguous

    Performance Improvements

    • #2226: Issue #1657: Reduce Window copying
    • #2221: Prefetch Parquet Meta Data
    • #2172: Top-N Rework using new sort code
    • #2167: Use new sort code in window functions
    • #2098: Reduce unnecessary sorting overhead
    • #2077: Fetch Arrow - Streaming

    C Client:

    • #2173: Don't strdup error msg
    • #2115: Improve performance of duckdb_value functions, add support for HUGEINT type and add extra result helper functions
    • #2107: CAPI Cleanup & DATE/TIME/TIMESTAMP rework

    R Client

    • #2250: Support column subsets in dbAppendTable()
    • #2134: Implement dbAppendTable()
    • #2136: Implement dbBind() according to specification
    • #2119: Enable more DBItest tests

    ODBC Client

    • #2184: Enabling pyodbc & #2124: Enable nanodbc & #2159: Making the R odbc package work with our ODBC driver
    • #2169: Supporting SQLPutData, SQLParamData, SQLMoreResults & - #2096: SQLFetchScroll and SQLGetPrivateProfileString
    • #2236: Windows x64 Support
    Source code(tar.gz)
    Source code(zip)
    duckdb-wasm32-nothreads.zip(5.53 MB)
    duckdb_cli-linux-amd64.zip(11.50 MB)
    duckdb_cli-linux-i386.zip(11.86 MB)
    duckdb_cli-linux-rpi.zip(7.15 MB)
    duckdb_cli-osx-amd64.zip(11.03 MB)
    duckdb_cli-windows-amd64.zip(5.78 MB)
    duckdb_cli-windows-i386.zip(5.47 MB)
    duckdb_jdbc-linux-amd64.jar(6.84 MB)
    duckdb_jdbc-linux-i386.jar(8.07 MB)
    duckdb_jdbc-osx-amd64.jar(6.53 MB)
    duckdb_jdbc-windows-amd64.jar(3.11 MB)
    duckdb_jdbc-windows-i386.jar(2.85 MB)
    duckdb_python_src.tar.gz(8.37 MB)
    duckdb_rest-linux-amd64.zip(10.87 MB)
    libduckdb-linux-amd64.zip(5.82 MB)
    libduckdb-linux-i386.zip(7.04 MB)
    libduckdb-linux-rpi.zip(6.26 MB)
    libduckdb-osx-amd64.zip(6.09 MB)
    libduckdb-src.zip(1.58 MB)
    libduckdb-windows-amd64.zip(2.93 MB)
    libduckdb-windows-i386.zip(2.69 MB)
  • v0.2.8(Aug 2, 2021)

    This preview release of DuckDB is named "Ceruttii" after a long-extinct relative of the present-day Harleqin Duck (Histrionicus Ceruttii). Binary builds are listed below. Feedback is very welcome.

    Note: Again, this release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

    SQL

    • #2064: RANGE/GENERATE_SERIES for timestamp + interval
    • #1905: Add PARQUET_METADATA and PARQUET_SCHEMA functions
    • #2059, #1995, #2020 & #1960: Window RANGE framing, NTH_VALUE and other improvements

    APIs

    Engine

    • #1975, #1876 & #2009: Unified row layout for sorting, aggregate & joins
    • #1930 & #1904: List Storage
    • #2050: CSV Reader/Casting Framework Refactor & add support for TRY_CAST
    • #1950: Add Constant Segment Compression to Storage
    • #1957: Add pipe/stream file system
    Source code(tar.gz)
    Source code(zip)
    duckdb-wasm32-nothreads.zip(5.21 MB)
    duckdb_cli-linux-amd64.zip(10.86 MB)
    duckdb_cli-linux-i386.zip(11.45 MB)
    duckdb_cli-linux-rpi.zip(6.46 MB)
    duckdb_cli-windows-amd64.zip(5.35 MB)
    duckdb_cli-windows-i386.zip(5.04 MB)
    duckdb_jdbc-linux-amd64.jar(6.54 MB)
    duckdb_jdbc-linux-i386.jar(7.67 MB)
    duckdb_jdbc-windows-amd64.jar(2.98 MB)
    duckdb_jdbc-windows-i386.jar(2.74 MB)
    duckdb_python_src.tar.gz(7.91 MB)
    duckdb_rest-linux-amd64.zip(10.25 MB)
    libduckdb-linux-amd64.zip(5.48 MB)
    libduckdb-linux-i386.zip(6.60 MB)
    libduckdb-linux-rpi.zip(5.85 MB)
    libduckdb-src.zip(1.55 MB)
    libduckdb-windows-amd64.zip(2.76 MB)
    libduckdb-windows-i386.zip(2.54 MB)
  • v0.2.7(Jun 14, 2021)

    This preview release of DuckDB is named "Mollissima" after the Common Eider (Somateria mollissima).
    Binary builds are listed below. Feedback is very welcome.

    Note: This release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

    Major changes:

    SQL

    • #1847: Unify catalog access functions, and provide views for common PostgreSQL catalog functions
    • #1822: Python/JSON-Style Struct & List Syntax
    • #1862: #1584 Implementing NEXTAFTER for float and double
    • #1860: FIRST implementation for nested types
    • #1858: UNNEST table function & array syntax in parser
    • #1761: Issue #1746: Moving QUANTILE

    APIs

    • #1852, #1840, #1831, #1819 and #1779: Improvements to Arrow Integration
    • #1843: First iteration of ODBC driver
    • #1832: Add visualizer extension
    • #1803: Converting Nested Types to native python
    • #1773: Add support for key/value style configuration, and expose this in the Python API

    Engine

    • #1808: Row-Group Based Storage
    • #1842: Add (Persistent) Struct Storage Support
    • #1859: Read and write atomically with offsets
    • #1851: Internal Type Rework
    • #1845: Nested join payloads
    • #1813: Aggregate Row Layout
    • #1836: Join Row Layout
    • #1804: Use Allocator class in buffer manager and add a test for a custom allocator usage
    Source code(tar.gz)
    Source code(zip)
    duckdb-wasm32-nothreads.zip(4.05 MB)
    duckdb_cli-linux-amd64.zip(9.39 MB)
    duckdb_cli-linux-i386.zip(9.82 MB)
    duckdb_cli-linux-rpi.zip(4.56 MB)
    duckdb_cli-osx-amd64.zip(8.09 MB)
    duckdb_cli-windows-amd64.zip(4.82 MB)
    duckdb_cli-windows-i386.zip(4.54 MB)
    duckdb_jdbc-linux-amd64.jar(5.39 MB)
    duckdb_jdbc-linux-i386.jar(6.05 MB)
    duckdb_jdbc-osx-amd64.jar(4.22 MB)
    duckdb_jdbc-windows-amd64.jar(2.74 MB)
    duckdb_jdbc-windows-i386.jar(2.52 MB)
    duckdb_python_src.tar.gz(7.39 MB)
    duckdb_rest-linux-amd64.zip(8.79 MB)
    duckdb_r_src.tar.gz(2.01 MB)
    libduckdb-linux-amd64.zip(4.35 MB)
    libduckdb-linux-i386.zip(5.00 MB)
    libduckdb-linux-rpi.zip(4.27 MB)
    libduckdb-osx-amd64.zip(3.76 MB)
    libduckdb-src.zip(1.53 MB)
    libduckdb-windows-amd64.zip(2.53 MB)
    libduckdb-windows-i386.zip(2.33 MB)
  • v0.2.6(May 8, 2021)

    This preview release of DuckDB is named "Jamaicensis" after the blue-billed Ruddy Duck (Oxyura jamaicensis). Binary builds are listed below. Feedback is very welcome.

    Note: This release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

    Also note: Due to changes in the internal storage (#1530), databases created with this release wil require somewhat more disk space. This is transient as we are working hard to finalise the on-disk storage format.

    Major changes:

    Engine

    • #1666: External merge sort, #1580: Parallel scan of ordered result and #1561: Rework physical ORDER BY
    • #1520 & #1574: Window function computation parallelism
    • #1540: Add table functions that take a subquery parameter
    • #1533: Using vectors, instead of column chunks as lists
    • #1530: Store null values separate from main data in a Validity Segment

    SQL

    • #1568: Positional Reference Operator #1 etc.
    • #1671: QUANTILE variants and #1685: Temporal quantiles
    • #1695: New Timestamp Types TIMESTAMP_NS, TIMESTAMP_MS and TIMESTAMP_NS
    • #1647: Add support for UTC offset timestamp parsing to regular timestamp conversion
    • #1659: Add support for USING keyword in DELETE statement
    • #1638, #1663, #1621 & #1484: Many changes arount ARRAY syntax
    • #1610: Add support for CURRVAL
    • #1544: Add SKIP as an option to READ_CSV and COPY

    APIs

    • #1525: Add loadable extensions support
    • #1711: Parallel Arrow Scans
    • #1569: Map-style UDFs for Python API
    • #1534: Extensible Replacement Scans & Automatic Pandas Scans and #1487: Automatically use parquet or CSV scan when using a table name that ends in .parquet or .csv
    • #1649: Add a QueryRelation object that can be used to convert a query directly into a relation object, #1665: Adding from_query to python api
    • #1550: Shell: Add support for Ctrl + arrow keys to linenoise, and make Ctrl+C terminate the current query instead of the process
    • #1514: Using ALTREP to speed up string column transfer to R
    • #1502: R: implementation of Rstudio connection-contract tab
    Source code(tar.gz)
    Source code(zip)
    duckdb-wasm32-nothreads.zip(3.96 MB)
    duckdb_cli-linux-amd64.zip(9.15 MB)
    duckdb_cli-linux-i386.zip(9.51 MB)
    duckdb_cli-linux-rpi.zip(4.39 MB)
    duckdb_cli-osx-amd64.zip(8.20 MB)
    duckdb_cli-windows-amd64.zip(4.55 MB)
    duckdb_cli-windows-i386.zip(4.31 MB)
    duckdb_jdbc-linux-amd64.jar(5.29 MB)
    duckdb_jdbc-linux-i386.jar(5.89 MB)
    duckdb_jdbc-osx-amd64.jar(4.47 MB)
    duckdb_jdbc-windows-amd64.jar(2.61 MB)
    duckdb_jdbc-windows-i386.jar(2.44 MB)
    duckdb_python_src.tar.gz(6.84 MB)
    duckdb_rest-linux-amd64.zip(8.54 MB)
    duckdb_r_src.tar.gz(1.95 MB)
    libduckdb-linux-amd64.zip(4.25 MB)
    libduckdb-linux-i386.zip(4.84 MB)
    libduckdb-linux-rpi.zip(4.11 MB)
    libduckdb-osx-amd64.zip(4.00 MB)
    libduckdb-src.zip(1.48 MB)
    libduckdb-windows-amd64.zip(2.41 MB)
    libduckdb-windows-i386.zip(2.25 MB)
  • v0.2.5(Mar 10, 2021)

    This preview release of DuckDB is named "Falcata" after the Falcated Duck (Mareca falcata). Binary builds are listed below. Feedback is very welcome.

    Note: This release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

    Major Changes:

    Engine

    • #1356: Incremental Checkpointing
    • #1422: Optimize Top N Implementation

    SQL

    • #1406, #1372, #1387: Many, many new aggregate functions
    • #1460: QUANTILE aggregate variant that takes a list of quantiles & #1346: Approximate Quantiles
    • #1461: JACCARD, #1441 LEVENSHTEIN & HAMMING distance scalar function
    • #1370: FACTORIAL scalar function and ! postfix operator
    • #1363: IS (NOT) DISTINCT FROM
    • #1385: LIST_EXTRACT to get a single element from a list
    • #1361: Aliases in the HAVING clause (fixes issue #1358)
    • #1355: Limit clause with non constant values

    APIs:

    • #1430 & #1424: DuckDB WASM builds
    • #1419: Exporting the appender api to C
    • #1408: Add blob support to C API
    • #1432, #1459 & #1456: Progress Bar
    • #1440: Detailed profiler.
    Source code(tar.gz)
    Source code(zip)
    duckdb-wasm32-nothreads.zip(3.80 MB)
    duckdb_cli-linux-amd64.zip(8.95 MB)
    duckdb_cli-linux-i386.zip(9.35 MB)
    duckdb_cli-linux-rpi.zip(4.20 MB)
    duckdb_cli-osx-amd64.zip(7.93 MB)
    duckdb_cli-windows-amd64.zip(4.47 MB)
    duckdb_cli-windows-i386.zip(4.25 MB)
    duckdb_jdbc-linux-amd64.jar(5.10 MB)
    duckdb_jdbc-linux-i386.jar(5.75 MB)
    duckdb_jdbc-osx-amd64.jar(4.20 MB)
    duckdb_jdbc-windows-amd64.jar(2.53 MB)
    duckdb_jdbc-windows-i386.jar(2.37 MB)
    duckdb_python_src.tar.gz(6.72 MB)
    duckdb_r_src.tar.gz(1.89 MB)
    libduckdb-linux-amd64.zip(4.08 MB)
    libduckdb-linux-i386.zip(4.70 MB)
    libduckdb-linux-rpi.zip(3.92 MB)
    libduckdb-osx-amd64.zip(3.73 MB)
    libduckdb-src.zip(1.43 MB)
    libduckdb-windows-amd64.zip(2.32 MB)
    libduckdb-windows-i386.zip(2.18 MB)
  • v0.2.4(Feb 2, 2021)

    This preview release of DuckDB is named "Jubata" after the Australian Wood Duck (Chenonetta jubata). Binary builds are listed below. Feedback is very welcome.

    Note: This release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

    Major changes: SQL

    • #1231: Full Text Search extension
    • #1309: Filter Clause for Aggregates
    • #1195: SAMPLE Operator
    • #1244: SHOW select queries
    • #1301: CHR and ASCII functions & #1252: Add GAMMA and LGAMMA functions

    Engine

    • #1211: (Mostly) Lock-Free Buffer Manager
    • #1325: Unsigned Integer Types Support
    • #1229: Filter Pull Up Optimizer
    • #1296: Optimizer that removes redundant DELIM_GET and DELIM_JOIN operators
    • #1219: DATE, TIME and TIMESTAMP rework: move to epoch format & microsecond support

    Clients

    • #1287 and #1275: Improving JDBC compatibility
    • #1260: Rework client API and prepared statements, and improve DuckDB -> Pandas conversion
    • #1230: Add support for parallel scanning of pandas data frames
    • #1256: JNI appender
    • #1209: Write shell history to file when added to allow crash recovery, and fix crash when .importing file with invalid
    • #1204: Add support for blobs to the R API and #1202: Add blob support to the python api

    Parquet

    • #1314: Refactor and nested types support for Parquet Reader
    Source code(tar.gz)
    Source code(zip)
    duckdb_cli-linux-amd64.zip(8.37 MB)
    duckdb_cli-linux-i386.zip(8.47 MB)
    duckdb_cli-linux-rpi.zip(3.57 MB)
    duckdb_cli-osx-amd64.zip(7.08 MB)
    duckdb_cli-windows-amd64.zip(4.16 MB)
    duckdb_cli-windows-i386.zip(3.90 MB)
    duckdb_jdbc-linux-amd64.jar(4.72 MB)
    duckdb_jdbc-linux-i386.jar(4.88 MB)
    duckdb_jdbc-osx-amd64.jar(3.45 MB)
    duckdb_jdbc-windows-amd64.jar(2.23 MB)
    duckdb_jdbc-windows-i386.jar(2.03 MB)
    duckdb_python_src.tar.gz(6.68 MB)
    duckdb_r_src.tar.gz(1.79 MB)
    libduckdb-linux-amd64.zip(3.69 MB)
    libduckdb-linux-i386.zip(3.83 MB)
    libduckdb-linux-rpi.zip(3.29 MB)
    libduckdb-osx-amd64.zip(2.98 MB)
    libduckdb-src.zip(1.33 MB)
    libduckdb-windows-amd64.zip(2.01 MB)
    libduckdb-windows-i386.zip(1.83 MB)
  • v0.2.3(Dec 3, 2020)

    This preview release of DuckDB is named "Serrator" after the Red-breasted merganser (Mergus serrator). Binary builds are listed below. Feedback is very welcome.

    Note: This release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

    Major changes:

    SQL:

    • #1179: Interval Cleanup & Extended INTERVAL Syntax
    • #1147: Add exact MEDIAN and QUANTILE functions
    • #1129: Support scalar functions with CREATE FUNCTION
    • #1137: Add support for (NOT) ILIKE, and optimize certain types of LIKE expressions

    Engine

    • #1160: Perfect Aggregate Hash Tables
    • #1133: Statistics Rework & Statistics Propagation
    • #1144: Common Aggregate Optimizer, #1143: CSE Optimizer and #1135: Optimizing expressions in grouping keys
    • #1138: Use predication in filters
    • #1071: Removing string null termination requirement

    Clients

    • #1112: Add DuckDB node.js API
    • #1168: Add support for Pandas category types
    • #1181: Extend DuckDB::LibraryVersion() to output dev version in format 0.2.3-devXXX & #1176: Python binding: Add module attributes for introspecting DuckDB version

    Parquet Reader:

    • #1183: Filter pushdown for Parquet reader
    • #1167: Exporting Parquet statistics to DuckDB
    • #1162: Add support for compression codec in Parquet writer & #1163: Add ZSTD Compression Code and add ZSTD codec as option for Parquet export
    • #1103: Add object cache and Parquet metadata cache
    Source code(tar.gz)
    Source code(zip)
    duckdb_cli-linux-amd64.zip(7.86 MB)
    duckdb_cli-linux-i386.zip(7.97 MB)
    duckdb_cli-linux-rpi.zip(3.32 MB)
    duckdb_cli-osx-amd64.zip(6.67 MB)
    duckdb_cli-windows-amd64.zip(3.86 MB)
    duckdb_cli-windows-i386.zip(3.62 MB)
    duckdb_jdbc-linux-amd64.jar(3.87 MB)
    duckdb_jdbc-linux-i386.jar(4.02 MB)
    duckdb_jdbc-osx-amd64.jar(3.21 MB)
    duckdb_jdbc-windows-amd64.jar(2.02 MB)
    duckdb_jdbc-windows-i386.jar(1.84 MB)
    duckdb_python_src.tar.gz(1.76 MB)
    duckdb_r_src.tar.gz(1.75 MB)
    libduckdb-linux-amd64.zip(3.38 MB)
    libduckdb-linux-i386.zip(3.55 MB)
    libduckdb-linux-rpi.zip(3.04 MB)
    libduckdb-osx-amd64.zip(2.75 MB)
    libduckdb-src.zip(1.31 MB)
    libduckdb-windows-amd64.zip(1.82 MB)
    libduckdb-windows-i386.zip(1.66 MB)
  • v0.2.2(Nov 1, 2020)

    This is a preview release of DuckDB. Starting from this release, releases get named as well. Names are chosen from species of ducks (of course). We start with "Clypeata".

    Note: This release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.

    Binary builds are listed below. Feedback is very welcome. Major changes:

    SQL

    • #1057: Add PRAGMA for enabling/disabling optimizer & extend output for query graph
    • #1048: Allow CTEs in subqueries (including CTEs themselves) and #987: Allow CTEs in CREATE VIEW statements
    • #1046: Prettify Explain/Query Profiler output
    • #1037: Support FROM clauses in UPDATE statements
    • #1006: STRING_SPLIT and STRING_SPLIT_REGEX SQL functions
    • #1000: Implement MD5 function
    • #936: Add GLOB support to Parquet & CSV readers
    • #899: Table functions information_schema_schemata() and information_schema_tables() and #903: Add table function information_schema_columns()

    Engine

    • #984: Parallel grouped aggregations and #1045: Some performance fixes for aggregate hash table
    • #1008: Index Join
    • #991: Local Storage Rework: Per-morsel version info and flush intermediate chunks to the base tables
    • #906: Parallel scanning of single Parquet files and #982: ZSTD Support in Parquet library
    • #883: Unify Table Scans with Table Functions
    • #873: TPC-H Extension
    • #884: Remove NFC-normalization requirement for all data and add COLLATE NFC

    Client

    • #1001: Dynamic Syntax Highlighting in Shell
    • #933: Upgrade shell.c to 3330000
    • #918: Add in support for Python datetime types in bindings
    • #950: Support dates and times output into arrow
    • #893: Support for Arrow NULL columns
    Source code(tar.gz)
    Source code(zip)
    duckdb_cli-linux-amd64.zip(7.63 MB)
    duckdb_cli-linux-i386.zip(7.21 MB)
    duckdb_cli-osx-amd64.zip(6.26 MB)
    duckdb_cli-windows-amd64.zip(3.68 MB)
    duckdb_cli-windows-i386.zip(3.20 MB)
    duckdb_jdbc-linux-amd64.jar(4.12 MB)
    duckdb_jdbc-linux-i386.jar(3.78 MB)
    duckdb_jdbc-osx-amd64.jar(2.74 MB)
    duckdb_jdbc-windows-amd64.jar(1.88 MB)
    duckdb_jdbc-windows-i386.jar(1.61 MB)
    duckdb_python_src.tar.gz(1.56 MB)
    duckdb_r_src.tar.gz(1.57 MB)
    duckdb_r_windows.zip(5.28 MB)
    libduckdb-linux-amd64.zip(3.87 MB)
    libduckdb-linux-i386.zip(3.43 MB)
    libduckdb-osx-amd64.zip(2.56 MB)
    libduckdb-src.zip(1.24 MB)
    libduckdb-windows-amd64.zip(1.79 MB)
    libduckdb-windows-i386.zip(1.48 MB)
  • v0.2.1(Aug 29, 2020)

    This is a preview release of DuckDB. Binary builds are listed below. Feedback is very welcome. Major changes:

    Engine

    • #770: Enable Inter-Pipeline Parallelism
    • #835: Type system updates with #779: INTERVAL Type, #858: Fixed-precision DECIMAL types & #819: HUGEINT type
    • #790: Parquet write support

    API

    • #866: Initial Arrow support
    • #809: Aggregate UDF support with #843: Generic CreateAggregateFunction() & #752: CreateVectorizedFunction() using only template parameters

    SQL

    • #824: strftime and strptime
    • #858: EXPORT DATABASE and IMPORT DATABASE
    • #832: read_csv(_auto) improvements: optional parameters, configurable sample size, line number info
    Source code(tar.gz)
    Source code(zip)
    duckdb_cli-linux-amd64.zip(7.04 MB)
    duckdb_cli-linux-i386.zip(6.91 MB)
    duckdb_cli-osx-amd64.zip(5.88 MB)
    duckdb_cli-windows-amd64.zip(3.39 MB)
    duckdb_cli-windows-i386.zip(3.09 MB)
    duckdb_jdbc-linux-amd64.jar(3.52 MB)
    duckdb_jdbc-linux-i386.jar(3.28 MB)
    duckdb_jdbc-osx-amd64.jar(2.40 MB)
    duckdb_jdbc-windows-amd64.jar(1.68 MB)
    duckdb_jdbc-windows-i386.jar(1.44 MB)
    duckdb_python_src.tar.gz(1.46 MB)
    duckdb_r_osx.tgz(2.97 MB)
    duckdb_r_src.tar.gz(1.47 MB)
    duckdb_r_windows.zip(5.00 MB)
    libduckdb-linux-amd64.zip(3.57 MB)
    libduckdb-linux-i386.zip(3.24 MB)
    libduckdb-osx-amd64.zip(2.42 MB)
    libduckdb-src.zip(1.26 MB)
    libduckdb-windows-amd64.zip(261.24 KB)
    libduckdb-windows-i386.zip(201.45 KB)
  • v0.1.8(May 29, 2020)

    This is a preview release of DuckDB. Feedback is very welcome.

    SQL

    • SQL functions IF and IFNULL #644
    • SQL string functions LEFT #620 and RIGHT #631
    • #641: BLOB type support
    • #640: LIKE escape support

    Clients

    • #627: Insertion support for Python relation API
    Source code(tar.gz)
    Source code(zip)
  • v0.1.7(May 4, 2020)

    This is the sixth preview release of DuckDB. Feedback is very welcome. Binary builds are available as well.

    SQL

    Engine

    • LIKE optimization rules #559
    • Adaptive filters in table scans #574
    • ICU Extension for extended Collations & Extension Support #594
    • Extended zone map support in scans #551
    • Disallow NaN/INF in the system #541
    • Use UTF Grapheme Cluster Breakers in Reverse and Shell #570

    Clients

    • Relation API for C++ #509 and Python #598
    • Java (TM) JDBC (R) Client for DuckDB #492 #520 #550
    Source code(tar.gz)
    Source code(zip)
  • v0.1.6(Apr 5, 2020)

    This is the fifth preview release of DuckDB. Feedback is very welcome. Binary builds can be found here: http://download.duckdb.org/alias/v0.1.6/

    SQL

    • #455 Table renames ALTER TABLE tbl RENAME TO tbl2
    • #457 Nested list type can be created using LIST aggregation and unpacked with the new UNNEST operator
    • #463 INSTR string function, #477 PREFIX string function, #480 SUFFIX string function

    Engine

    • #442 Optimized casting performance to strings
    • #444 Variable return types for table-producing functions
    • #453 Rework aggregate function interface
    • #474 Selection vector rework
    • #478 UTF8 NFC normalization of all incoming strings
    • #482 Skipping table segments during scan based on min/max indices

    Python client

    • #451 date / datetime support
    • #467 description field for cursor
    • #473 Adding read_only flag to connect
    • #481 Rewrite of Python API using pybind11

    R client

    • #468 Support for prepared statements in R client
    • #479 Adding automatic CSV to table function read_csv_duckdb
    • #483 Direct scan operator for R data.frame objects
    Source code(tar.gz)
    Source code(zip)
  • v0.1.5(Mar 2, 2020)

    This is the fourth preview release of DuckDB. Feedback is very welcome. Note: The v0.1.4 version was skipped because of a Python packaging issue.

    Binary builds can be found here: http://download.duckdb.org/rev/59f8907b5d89268c158ae1774d77d6314a5c075f/

    Major changes:

    • #409 Vector Overhaul
    • #423 Remove individual vector cardinalities
    • #418 DATE_TRUNC SQL function
    • #424 REVERSE SQL function
    • #416 Support for SELECT table.* FROM table
    • #414 STRUCT types in query execution
    • #431 Changed internal string representation
    • #433 Rename internal type index_t to idx_t
    • #439 Support for temporary structures in read-only mode
    • #440 Builds on Solaris & OpenBSD

    Note: This release contains a bug in the Python API that leads to crashes when fetching strings to NumPy/Pandas #447

    Source code(tar.gz)
    Source code(zip)
  • v0.1.3(Feb 3, 2020)

    This is the third preview release of DuckDB. Feedback is very welcome. Binary builds can be found here: http://download.duckdb.org/rev/59f8907b5d89268c158ae1774d77d6314a5c075f/

    Major changes:

    • #388 Major updates to shell
    • #390 Unused Column & Column Lifetime Optimizers
    • #402 String and compound keys in indices/primary keys
    • #406 Adaptive reordering of filter expressions
    Source code(tar.gz)
    Source code(zip)
  • v0.1.2(Jan 6, 2020)

    This is the third preview release of DuckDB. Feedback is very welcome. Binary builds can be found here: http://download.duckdb.org/rev/6fcb5ef8e91dcb3c9b2c4ca86dab3b1037446b24/

    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Sep 24, 2019)

    This is the second preview release of DuckDB. Feedback is very welcome. Binary builds can be found here: http://download.duckdb.org/rev/2e51e9bae7699853420851d3d2237f232fc2a9a8/

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Jun 27, 2019)

WebAssembly version of DuckDB

DuckDB-Wasm DuckDB-Wasm is an in-process analytical SQL database for the browser. It is powered by WebAssembly, speaks Arrow fluently, reads Parquet,

DuckDB 195 Jun 26, 2022
YugabyteDB is a high-performance, cloud-native distributed SQL database that aims to support all PostgreSQL features

YugabyteDB is a high-performance, cloud-native distributed SQL database that aims to support all PostgreSQL features. It is best to fit for cloud-native OLTP (i.e. real-time, business-critical) applications that need absolute data correctness and require at least one of the following: scalability, high tolerance to failures, or globally-distributed deployments.

yugabyte 6.6k Jul 1, 2022
TimescaleDB is an open-source database designed to make SQL scalable for time-series data.

An open-source time-series SQL database optimized for fast ingest and complex queries. Packaged as a PostgreSQL extension.

Timescale 13.3k Jun 27, 2022
OceanBase is an enterprise distributed relational database with high availability, high performance, horizontal scalability, and compatibility with SQL standards.

What is OceanBase database OceanBase Database is a native distributed relational database. It is developed entirely by Alibaba and Ant Group. OceanBas

OceanBase 4.4k Jun 27, 2022
dqlite is a C library that implements an embeddable and replicated SQL database engine with high-availability and automatic failover

dqlite dqlite is a C library that implements an embeddable and replicated SQL database engine with high-availability and automatic failover. The acron

Canonical 3k Jun 27, 2022
MillenniumDB is a graph oriented database management system

Millennium DB MillenniumDB is a graph oriented database management system developed by the Millennium Institute for Foundational Research on Data (IMF

null 21 Jun 20, 2022
Kunlun distributed DBMS is a NewSQL OLTP relational distributed database management system

Kunlun distributed DBMS is a NewSQL OLTP relational distributed database management system. Application developers can use Kunlun to build IT systems that handles terabytes of data, without any effort on their part to implement data sharding, distributed transaction processing, distributed query processing, crash safety, high availability, strong consistency, horizontal scalability. All these powerful features are provided by Kunlun.

zettadb 99 Jun 24, 2022
MySQL Server, the world's most popular open source database, and MySQL Cluster, a real-time, open source transactional database.

Copyright (c) 2000, 2021, Oracle and/or its affiliates. This is a release of MySQL, an SQL database server. License information can be found in the

MySQL 8k Jul 4, 2022
A mini database for learning database

A mini database for learning database

Chuckie Tan 3 Nov 3, 2021
A type safe SQL template library for C++

sqlpp11 A type safe embedded domain specific language for SQL queries and results in C++ Documentation is found in the wiki So what is this about? SQL

Roland Bock 2k Jul 2, 2022
A bare-bone SQL implementation

MiniSQL A bare-bone SQL implementation. Project Structure include folder contains header files of all modules. These header files are meant to be shar

null 16 Apr 23, 2022
A PostgreSQL extension providing an async networking interface accessible via SQL using a background worker and curl.

pg_net is a PostgreSQL extension exposing a SQL interface for async networking with a focus on scalability and UX.

Supabase 41 Jun 19, 2022
A lightweight header-only C++11 library for quick and easy SQL querying with QtSql classes.

EasyQtSql EasyQtSql is a lightweight header-only C++11 library for quick and easy SQL querying with QtSql classes. Features: Header only C++11 library

null 44 Jun 28, 2022
PGSpider: High-Performance SQL Cluster Engine for distributed big data.

PGSpider: High-Performance SQL Cluster Engine for distributed big data.

PGSpider 127 Jun 24, 2022
PolarDB for PostgreSQL (PolarDB for short) is an open source database system based on PostgreSQL.

PolarDB for PostgreSQL (PolarDB for short) is an open source database system based on PostgreSQL. It extends PostgreSQL to become a share-nothing distributed database, which supports global data consistency and ACID across database nodes, distributed SQL processing, and data redundancy and high availability through Paxos based replication. PolarDB is designed to add values and new features to PostgreSQL in dimensions of high performance, scalability, high availability, and elasticity. At the same time, PolarDB remains SQL compatibility to single-node PostgreSQL with best effort.

Alibaba 2.3k Jun 30, 2022
GalaxyEngine is a MySQL branch originated from Alibaba Group, especially supports large-scale distributed database system.

GalaxyEngine is a MySQL branch originated from Alibaba Group, especially supports large-scale distributed database system.

null 229 Jun 30, 2022
Database system project based on CMU 15-445/645 (FALL 2020)

Database system project based on CMU 15-445/645 (FALL 2020)

null 15 Jul 1, 2022
Money Manager Ex is an easy to use, money management application built with wxWidgets

Money Manager Ex Money Manager Ex is a free, open-source, cross-platform, easy-to-use personal finance software. It primarily helps organize one's fin

Money Manager EX 1.1k Jun 25, 2022
ESE is an embedded / ISAM-based database engine, that provides rudimentary table and indexed access.

Extensible-Storage-Engine A Non-SQL Database Engine The Extensible Storage Engine (ESE) is one of those rare codebases having proven to have a more th

Microsoft 780 Jun 13, 2022