HarperDB 3.3.0, Monkey Release (Current Release)



  • CORE-1595 Added new role type structure_user, this enables non-superusers to be able to create/drop schema/table/attribute.
  • CORE-1501 Improved performance for drop_table.
  • CORE-1599 Added two new operations for custom functions install_node_modules & audit_node_modules.
  • CORE-1598 Added skip_node_modules flag to package_custom_function_project operation. This flag allows for not bundling project dependencies and deploying a smaller project to other nodes. Use this flag in tandem with install_node_modules.
  • CORE-1707 Binaries are now included for Linux on AMD64, Linux on ARM64, and macOS. GCC, Make, Python are no longer required when installing on these platforms.

Monkey 3.0 Release

Did you know our release names are dedicated to employee pups? For our third release, we have Monkey.
Here is a bit about Monkey:
Hi, I am Monkey, a.k.a. Monk, a.k.a. Monchichi. My dad is Aron Johnson, the Director of DevOps at HarperDB. I am an eight-year-old Australian Cattle dog mutt whose favorite pastime is hunting and collecting tennis balls from the park next to her home. I love burrowing in the Colorado snow, rolling in the cool grass on warm days, and cheese!

HarperDB 3.2.1, Monkey Release



  • CORE-1573 Added logic to track the pid of the foreground process if running in foreground. Then on stop, use that pid to kill the process. Logic was also added to kill the pm2 daemon when stop is called.

HarperDB 3.2.0, Monkey Release



  • CORE-1391 Bug fix related to orphaned HarperDB background processes.
  • CORE-1509 Updated node version check, updated Node.js version, updated project dependencies.
  • CORE-1518 Remove final call from logger.

HarperDB 3.1.5, Monkey Release



  • CORE-1498 Fixed incorrect autocasting of string that start with "0." that tries to convert to number but instead returns NaN.

HarperDB 3.1.4, Monkey Release



  • CORE-1460 Added new setting STORAGE_WRITE_ASYNC. If this setting is true, LMDB will have faster write performance at the expense of not being crash safe. The default for this setting is false, which results in HarperDB being crash safe.

HarperDB 3.1.3, Monkey Release


Bug Fixes

  • CORE-1446 Fix for scans on indexes larger than 1 million entries causing queries to never return

HarperDB 3.1.2, Monkey Release



  • Updated the installation ASCII art to reflect the new HarperDB logo

Bug Fixes

  • CORE-1408 Corrects issue where drop_attribute was not properly setting the LMDB version number causing  tables to behave unexpectedly

HarperDB 3.1.1, Monkey Release



  • CORE-1393 Added utility function to add settings from env/cmd vars to the settings file on every run/restart
  • CORE-1395 Create a setting which will allow to enable the local Studio to be served from an instance of HarperDB
  • CORE-1397 Update the stock 404 response to not return the request URL
  • General updates to optimize Docker container

Bug Fixes

  • CORE-1399 Added fixes for complex SQL alias issues

HarperDB 3.1.0, Monkey Release



  • CORE-1320, CORE-1321, CORE-1323, CORE-1324 Version 1.0 of HarperDB Custom Functions
  • CORE-1275, CORE-1276, CORE-1278, CORE-1279, CORE-1280, CORE-1282, CORE-1283, CORE-1305, CORE-1314 IPC server for communication between HarperDB processes, including HarperDB, HarperDB Clustering, and HarperDB Functions
  • CORE-1352, CORE-1355, CORE-1356, CORE-1358 Implement pm2 for HarperDB process management
  • CORE-1292, CORE-1308, CORE-1312, CORE-1334, CORE-1338 Updated installation process to start HarperDB immediately on install and to accept all config settings via environment variable or command line arguments
  • CORE-1310 Updated licensing functionality
  • CORE-1301 Updated validation for performance improvement
  • CORE-1359 Add hdb-response-time header which returns the HarperDB response time in milliseconds

Bug Fixes

  • CORE-1315 Corrected issue in HarperDB restart scenario
  • CORE-1370 Update some of the validation error handlers so that they don't log full stack

HarperDB 3.0, Monkey Release



  • CORE-1217, CORE-1226, CORE-1232 Create new search_by_conditions operation.
  • CORE-1304 Upgrade to Node 12.22.1.
  • CORE-1235 Adds new upgrade/install functionality.
  • CORE-1206, CORE-1248, CORE-1252 Implement lmdb-store library for optimized performance.
  • CORE-1062 Added alias operation for delete_files_before, named delete_records_before.
  • CORE-1243 Change HTTPS_ON settings value to false by default.
  • CORE-1189 Implement fastify web server, resulting in improved performance.
  • CORE-1221 Update user API to use role name instead of role id.
  • CORE-1225 Updated dependencies to eliminate npm security warnings.
  • CORE-1241 Adds 3.0 update directive and refactors/fixes update functionality.

Bug Fixes

  • CORE-1299 Remove all references to the PROJECT_DIR setting. This setting is problematic when using node version managers and upgrading the version of node and then installing a new instance of HarperDB.
  • CORE-1288 Fix bug with drop table/schema that was causing 'env required' error log.
  • CORE-1285 Update warning log when trying to create an attribute that already exists.
  • CORE-1254 Added logic to manage data collisions in clustering.
  • CORE-1212 Add pre-check to drop_user that returns error if user doesn't exist.
  • CORE-1114 Update response code and message from add_user when user already exists.
  • CORE-1111 Update response from create_attribute to match the create schema/table response. 
  • CORE-1205 Fixed bug that prevented schema/table from being dropped if name was a number or had a wildcard value in it. Updated validation for insert, upsert and update.

Penny 2.0 Releases

Did you know our release names are dedicated to employee pups? For our second release, Penny was the star.
Here is a bit about Penny:
Hi I am Penny! My dad is Kyle Bernhardy, the CTO of HarperDB. I am a nine-year-old Whippet who lives for running hard and fast while exploring the beautiful terrain of Colorado. My favorite activity is chasing birds along with afternoon snoozes in a sunny spot in my backyard.

HarperDB 2.3.1, Penny Release


Bug Fixes

  • CORE-1218 A bug in HarperDB 2.3.0 was identified related to manually calling the create_attribute operation. This bug caused secondary indexes to be overwritten by the most recently inserted or updated value for the index, thereby causing a search operation filtered with that index to only return the most recently inserted/updated row. Note, this issue does not affect attributes that are reflexively/automatically created. It only affects attributes created using create_attribute. To resolve this issue in 2.3.0 or earlier, drop and recreate your table using reflexive attribute creation. In 2.3.1, drop and recreate your table and use either reflexive attribute creation or create_attribute. To resolve this issue in 2.3.0 or earlier, drop and recreate your table using reflexive attribute creation. In 2.3.1, drop and recreate your table and use either reflexive attribute creation or create_attribute.
  • CORE-1219 Increased maximum table attributes from 1000 to 10000.

HarperDB 2.3.0, Penny Release



  • CORE-1191, CORE-1190, CORE-1125, CORE-1157, CORE-1126, CORE-1140, CORE-1134, CORE-1123, CORE-1124, CORE-1122
    Added JWT Authentication option (See documentation for more information)
  • CORE-1128, CORE-1143, CORE-1140, CORE-1129
    Added upsert operation
  • CORE-1187 Added get_configuration operation which allows admins to view their configuration settings.
  • CORE-1175 Added new internal LMDB function to copy an environment for use in future features.
  • CORE-1166 Updated packages to address security vulnerabilities.

Bug Fixes

  • CORE-1195 Modified drop_attribute to drop after data cleanse completes.
  • CORE-1149 Fix SQL bug regarding self joins and updates alasql to 0.6.5 release.
  • CORE-1168 Fix inconsistent invalid schema/table errors.
  • CORE-1162 Fix bug which caused delete_files_beforeto cause tables to grow in size due to an open cursor issue.

HarperDB 2.2.3, Penny Release


  • CORE-1158 Performance improvements to core delete function and configuration of delete_files_before  to run in batches with a pause into between.

HarperDB 2.2.2, Penny Release


  • CORE-1154 Allowed transaction logging to be disabled even if clustering is enabled.
  • CORE-1153 Fixed issue where delete_files_before was writing to transaction log.
  • CORE-1152 Fixed issue where no more than 4 HarperDB forks would be created.
  • CORE-1112 Adds handling for system timestamp attributes in permissions.
  • CORE-1131 Adds better handling for checking perms on operations with action value in JSON.
  • CORE-1113 Fixes validation bug checking for super user/cluster user permissions and other permissions.
  • CORE-1135 Adds validation for valid keys in role API operations.
  • CORE-1073 Adds new import_from_s3operation to API.


HarperDB 2.2.0, Penny Release



  • CORE-997 Updated the data format for CSV data loads being sync'd across a cluster to take up less resources
  • CORE-1018 Adds SQL functionality for  BETWEEN statements
  • CORE-1032 Updates permissions to allow regular users (i.e. non-super users) to call the  get_job  operation
  • CORE-1036 On create/drop table we auto create/drop the related transactions environments for the schema.table
  • CORE-1042 Built raw functions to write to a tables transaction log for insert/update/delete operations
  • CORE-1057 Implemented write transaction into lmdb create/update/delete functions
  • CORE-1048 Adds  SEARCH wildcard handling for role permissions standards
  • CORE-1059 Added config setting to disable transaction logging for an instance
  • CORE-1076 Adds permissions filter to describe operations
  • CORE-1043 Change clustering catchup to use the new transaction log
  • CORE-1052 Removed word "master" from source
  • CORE-1061 Added new operation called delete_transactions_before this will tail a transaction log for a specific schema / table
  • CORE-1040 On HarperDB startup make sure all tables have a transaction environment
  • CORE-1055 Added 2 new setting to change the server headersTimeout & keepAliveTimeout from the config file
  • CORE-1044 Created new operation read_transaction_log which will allow a user to get transactions for a table by timestamp, username, or hash_value
  • CORE-1043 Change clustering catchup to use the new transaction log
  • CORE-1089 Added new attribute to system_information for table/transaction log data size in bytes & transaction log record count
  • CORE-1101 Fix to store empty strings rather than considering them null & fix to be able to search on empty strings in SQL/NoSQL.
  • CORE-1054 Updates permissions object to remove delete attribute permission and update table attribute permission key to attribute_permissions
  • CORE-1092 Do not allow the __createdtime__ to be updated
  • CORE-1085 Updates create schema/table & drop schema/table/attribute operations permissions to require super user role and adds integration tests to validate
  • CORE-1071 Updates response messages and status codes from describe_schema and describe_table operations to provide standard language/status code when a schema item is not found
  • CORE-1049 Updates response message for SQL update op with no matching rows
  • CORE-1096 Added tracking of the origin in the transaction log. This origin object stores the node name, timestamp of the transaction from the originating node & the user.

Bug Fixes

  • CORE-1028 Fixes bug for simple SQL SELECT queries not returning aliases and incorrectly returning hash values when not requested in query
  • CORE-1037 Fixed an issue where numbers with leading zero i.e. 00123 are converted to numbers rather than being honored as strings.
  • CORE-1063 Updates permission error response shape to consolidate issues into individual objects per schema/table combo
  • CORE-1098 Fixed an issue where transaction environments were remaining in the global cache after being dropped.
  • CORE-1086 Fixed issue where responses from insert/update were incorrect with skipped records.
  • CORE-1079 Fixes SQL bugs around invalid schema/table and special characters in WHERE clause

HarperDB 2.1.1, Penny Release



  • CORE-1007 Added the ability to perform SQL INSERT & UPDATE with function calls & expressions on values.
  • CORE-1023 Fixed minor bug in final SQL step incorrectly trying to translate ordinals to alias in ORDER BY statement.
  • CORE-1020 Fixed bug allowing 'null' and 'undefined' string values to be passed in as valid hash values.
  • CORE-1006 Added SQL functionality that enables JOIN statements across different schemas.
  • CORE-1005 Implemented JSONata library to handle our JSON document search functionality in SQL, creating the SEARCH_JSON function.
  • CORE-1009 Updated schema validation to allow all printable ASCII characters to be used in schema/table/attribute names, except, forward slashes and backticks. Same rules apply now for hash attribute values.
  • CORE-1003  Fixed handling of ORDER BY statements with function aliases.
  • CORE-1004  Fixed bug related to SELECT*  on JOIN queries with table columns with the same name.
  • CORE-996  Fixed an issue where the transact_to_cluster flag is lost for CSV URL loads, fixed an issue where new attributes created in CSV bulk load do not sync to the cluster.
  • CORE-994 Added new operation "system_information". This operation returns info & metrics for the OS, time, memory, cpu, disk, network.
  • CORE-993  Added new custom date functions for AlaSQL & UTC updates.
  • CORE-991  Changed jobs to spawn a new process which will run the intended job without impacting a main HarperDB process.
  • CORE-992   HTTPS enabled by default.
  • CORE-990  Updated describe_table to add the record count for the table for LMDB data storage.
  • CORE-989  Killed the socket cluster processes prior to HarperDB processes to eliminate a false uptime.
  • CORE-975 Updated time values set by SQL Date Functions to be in epoch format.
  • CORE-974  Added date functions to SQL SELECT column alias functionality.

Alby 1.0 Releases

Did you know our release names are dedicated to employee pups? For our first release, Alby was our pup.
Here is a bit about Alby:
Hi, I am Alby. My mom is Kaylan Stock, Director of Marketing at HarperDB. I am a 9-year-old Great Dane mix who loves sun bathing, going for swims, and wreaking havoc on the local squirrels. My favorite snack is whatever you are eating and I love a good butt scratch!

HarperDB 1.3.1, Alby Release



  • Clustering connection direction appointment
  • Foundations for threading/multi processing
  • UUID autogen for hash attributes that were not provided 
  • Added cluster status operation


Bug Fixes and Enhancements 

  • More logging
  • Clustering communication enhancements
  • Clustering queue ordering by timestamps
  • Cluster re connection enhancements
  • Number of system core(s) detection
  • Node LTS (10.15) compatibility
  • Update/Alter users enhancements
  • General performance enhancements
  • Warning is logged if different versions of harperdb are connected via clustering
  • Fixed need to restart after user creation/alteration
  • Fixed SQL error that occurred on selecting from an empty table

HarperDB 1.3.0, Alby Release



  • Upgrade: Upgrade to newest version via command line.
  • SQL Support:  Added IS NULL for SQL parser.
  • Added attribute validation to search operations.



  • Fixed SELECT calculations, i.e. SELECT 2+2.
  • Fixed select OR not returning expected results.
  • No longer allowing reserved words (https://harperdb.io/docs/sql-overview/sql-reserved-word/) for schema and table names.
  • Corrected process interruptions from improper SQL statements.
  • Improved message handling between spawned processes that replace killed processes.
  • Enhanced error handling for updates to tables that do not exist.
  • Fixed error handling for NoSQL responses when get_attributes is provided with invalid attributes.
  • Fixed issue with new columns not being updated properly in update statements.
  • Now validating roles, tables and attributes when creating or updating roles.
  • Fixed an issue where in some cases“undefined” was being returned after dropping a role

HarperDB 1.2.0, Alby Release



  • Time to Live: Conserve the resources of your edge device by setting data on devices to live for a specific period of time.
  • Geo: HarperDB has implemented turf.js into its SQL parser to enable geo based analytics.
  • Jobs: CSV Data loads, Exports & Time to Live now all run as back ground jobs.
  • Exports: Perform queries that export into JSON or CSV and save to disk or S3.



  • Fixed issue where CSV data loads incorrectly report number of records loaded.
  • Added validation to stop BETWEEN operations in SQL.
  • Updated logging to not include internal variables in the logs.
  • Cleaned up add_role response to not include internal variables.
  • Removed old and unused dependencies.
  • Build out further unit tests and integration tests.
  • Fixed https to handle certificates properly.
  • Improved stability of clustering & replication.
  • Corrected issue where Objects and Arrays were not casting properly in SQL SELECT response.
  • Fixed issue where Blob text was not being returned from SQL SELECTs.
  • Fixed error being returned when querying on table with no data, now correctly returns empty array.
  • Improved performance in SQL when searching on exact values.
  • Fixed error when ./harperdb stop is called.
  • Fixed logging issue causing instability in installer.
  • Fixed read_log operation to accept date time.
  • Added permissions checking to export_to_s3.
  • Added ability to run SQL on SELECT without a FROM.
  • Fixed issue where updating a user’s password was not encrypting properly.
  • Fixed user_guide.html to point to readme on git repo.
  • Created option to have HarperDB run as a foreground process.
  • Updated user_info to return the correct role for a user.
  • Fixed issue where HarperDB would not stop if the database root was deleted.
  • Corrected error message on insert if an invalid schema is provided.
  • Added permissions checks for user & role operations.

HarperDB 1.1.0, Alby Release



  • Users & Roles:
    • Limit/Assign access to all HarperDB operations
    • Limit/Assign access to schemas, tables & attributes
    • Limit/Assign access to specific SQL operations (INSERT, UPDATE, DELETE, SELECT)
  • Enhanced SQL parser
    • Added extensive ANSI SQL Support.
    • Added Array function, which allows for converting relational data into Object/Hierarchical data: https://harperdb.io/blog/sql-queries-to-complex-objects/
    • Distinct_Array Function: allows for removing duplicates in the Array function.
    • Enhanced SQL Validation: Improved validation around structure of SQL, validating the schema, etc..
    • 10x performance improvement on SQL statements. 
  • Export Function: can now call a NoSQL/SQL search and have it export to CSV or JSON.
  • Added upgrade function to CLI
  • Added ability to perform bulk update from CSV
  • Created landing page for harperdb.  
  • Added CORS support to HarperDB: https://harperdb.io/docs/security/configuration/


  • Fixed memory leak in CSV bulk loads
  • Corrected error when attempting to perform a SQL DELETE
  • Added further validation to NoSQL UPDATE to validate schema & table exist
  • Fixed install issue occurring when part of the install path does not exist, the install would silently fail.
  • Fixed issues with replicated data when one of the replicas is down
  • Removed logging of initial user’s credentials during install
  • Can now use reserved words as aliases in SQL
  • Removed user(s) password in results when calling list_users
  • Corrected forwarding of operations to other nodes in a cluster
  • Corrected lag in schema meta-data passing to other nodes in a cluster
  • Drop table & schema now move the table & schema or table to the trash folder under the Database folder for later permanent deletion.
  • Bulk inserts no longer halt the entire operation if n records already exist, instead the return includes the hashes of records that have been skipped. 
  • Added ability to accept EULA from command line
  • Corrected search_by_value not searching on the correct attribute
  • Added ability to increase the timeout of a request by adding SERVER_TIMEOUT_MS to config/settings.js
  • Add error handling resulting from SQL calculations.
  • Standardized error responses as JSON.
  • Corrected internal process generation to not allow more processes than machine has cores.