Apache AsterixDB JDBC Driver
Copyright 2021 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

The Initial Developer of the driver software is Couchbase, Inc.
Copyright 2021 Couchbase, Inc.
