All Versions
14
Latest Version
Avg Release Cycle
150 days
Latest Release
20 days ago

Changelog History
Page 1

  • v0.7.12

    February 04, 2020

    🔋 Features

    • 👍 CockroachDB support added
    • ✅ CI testing for SQLite, PostgreSQL & CockroachDB

    🛠 Bugfixes

    • 🛠 Fix translation of getting array items with negative indexes
    • 🛠 Fix string getitem translation for slices and negative indexes
    • 🛠 PostgreSQL DISTINCT bug fixed for queries with ORDER BY clause
    • 🛠 Fix date difference syntax in PostgreSQL
    • 🛠 Fix casting json to dobule in PostgreSQL
    • 🛠 Fix count by several columns in PostgreSQL
    • 🛠 Fix PostgreSQL MIN and MAX expressions on boolean columns
    • 🛠 Fix determination of interactive mode in PyCharm
    • 🛠 Fix column definition when sql_default is specified: DEFAULT should be before NOT NULL
    • ⚡️ Relax checks on updating in-memory cache indexes (don't throw CacheIndexError on valid cases)
    • 🛠 Fix deduplication logic for attribute values
  • v0.7.11

    October 23, 2019

    🔋 Features

    • 👍 #472: Python 3.8 support
    • 👌 Support of hybrid functions (inlining simple Python functions into query)
    • 👍 #438: support datetime-datetime, datetime-timedelta, datetime+timedelta in queries

    🛠 Bugfixes

    • #430: add ON DELETE CASCADE for many-to-many relationships
    • #465: Should reconnect to MySQL on OperationalError 2013 'Lost connection to MySQL server during query'
    • #468: Tuple-value comparisons generate incorrect queries
    • 🗄 #470 fix PendingDeprecationWarning of imp module
    • 🛠 Fix incorrect unpickling of objects with Json attributes
    • Check value of discriminator column on object creation if set explicitly
    • Correctly handle Flask current_user proxy when adding new items to collections
    • 🛠 Some bugs in syntax of aggregated queries were fixed
    • 🛠 Fix syntax of bulk delete queries
    • Bulk delete queries should clear query results cache so next select will get correct result from the database
    • 🛠 Fix error message when hybrid method is too complex to decompile
  • v0.7.10

    April 20, 2019

    🛠 Bugfixes

    • 🛠 Python3.7 and PyPy decompiling fixes
    • 🛠 Fix reading NULL from Optional nullable array column
    • 🛠 Fix handling of empty arrays in queries
    • #415: error message typo
    • #432: PonyFlask - request object can trigger teardown_request without real request
    • 🛠 Fix GROUP CONCAT separator for MySQL
  • v0.7.9

    January 21, 2019

    🛠 Bugfixes

    • 🛠 Fix handling of empty arrays and empty lists in queries
    • 🛠 Fix reading optional nullable array columns from database
  • v0.7.8

    January 19, 2019

    🚀 This is a bug fix release

    🛠 Bugfixes

    • #414: prefetching Optional relationships fails on 0.7.7
    • 🛠 Fix a bug caused by incorrect deduplication of column values
  • v0.7.7

    January 17, 2019

    Major features

    • 👍 Array type support for PostgreSQL and SQLite
    • 👍 isinstance() support in queries
    • 👌 Support of queries based on collections: select(x for x in y.items)

    Other features

    • Support of Entity.select(**kwargs)
    • 👌 Support of SKIP LOCKED option in 'SELECT ... FOR UPDATE'
    • New function make_proxy(obj) to make cros-db_session proxy objects
    • Specify ON DELETE CASCADE/SET NULL in foreign keys
    • 👌 Support of LIMIT in SELECT FROM (SELECT ...) type of queries
    • 👌 Support for negative JSON array indexes in SQLite

    👌 Improvements

    • 👌 Improved query prefetching: use fewer number of SQL queries
    • Memory optimization: deduplication of values recieved from the database in the same session
    • increase DBAPIProvider.max_params_count value

    🛠 Bugfixes

    • #405: breaking change with cx_Oracle 7.0: DML RETURNING now returns a list
    • #380: db_session should work with async functions
    • #385: test fails with python3.6
    • 🚀 #386: release unlocked lock error in SQLite
    • #390: TypeError: writable buffers are not hashable
    • #398: add auto coversion of numpy numeric types
    • #404: GAE local run detection
    • 🛠 Fix Flask compatibility: add support of LocalProxy object
    • db_session(sql_debug=True) should log SQL commands also during db_session. exit ()
    • 🛠 Fix duplicated table join in FROM clause
    • 🛠 Fix accessing global variables from hybrid methods and properties
    • 🛠 Fix m2m collection loading bug
    • 🛠 Fix composite index bug: stackoverflow.com/questions/53147694
    • 🛠 Fix MyEntity[obj.get_pk()] if pk is composite
    • MySQL group_concat_max_len option set to max of 32bit platforms to avoid truncation
    • 👉 Show all attribute options in show(Entity) call
    • For nested db_session retry option should be ignored
    • Fix py_json_unwrap
    • 🛠 Other minor fixes
  • v0.7.6

    August 10, 2018

    🔋 Features since 0.7.5:

    • 👍 f-strings support in queries: select(f'{s.name} - {s.age}' for s in Student)
    • #344: It is now possible to specify offset without limit: query.limit(offset=10)
    • 👍 #371: Support of explicit casting of JSON expressions to str, int or float
    • 📄 @db.on_connect decorator added

    🛠 Bugfixes

    • 🛠 Fix bulk delete bug introduced in 0.7.4
    • #370 Fix memory leak introduced in 0.7.4
    • Now exists() in query does not throw away condition in generator expression:
      exists(s.gpa > 3 for s in Student)
    • #373: 0.7.4/0.7.5 breaks queries using the in operator to test membership of another query result
    • #374: auto=True can be used with all PrimaryKey types, not only int
    • #369: Make QueryResult looks like a list object again: add concatenation with lists, .shuffle() and .to_list() methods
    • #355: Fix binary primary keys PrimaryKey(buffer) in Python2
    • 👍 Interactive mode support for PyCharm console
    • 🛠 Fix wrong table aliases in complex queries
    • 🛠 Fix query optimization code for complex queries
    • 🛠 Fix a bug with hybrid properties that use external functions
  • v0.7.6.rc1

    August 08, 2018

    🛠 This is mostly bugfix release to fix bugs introduced in 0.7.4

    🆕 New features

    • 👍 f-strings support in queries: select(f'{s.name} - {s.age}' for s in Student)
    • #344: It is now possible to specify offset without limit: query.limit(offset=10)
    • 👍 #371: Support of explicit casting of JSON expressions to str, int or float
    • #367: @db.on_connect decorator added

    🛠 Bugfixes

    • 🛠 Fix bulk delete bug introduced in 0.7.4
    • #370 Fix memory leak introduced in 0.7.4
    • Now exists() in query does not throw away condition in generator expression: exists(s.gpa > 3 for s in Student)
    • #373: 0.7.4/0.7.5 breaks queries using the in operator to test membership of another query result
    • #374: auto=True can be used with all PrimaryKey types, not only int
    • #369: Make QueryResult looks like a list object again: add concatenation with lists, .shuffle() and .to_list() methods
    • #355: Fix binary primary keys PrimaryKey(buffer) in Python2
    • 👍 Interactive mode support for PyCharm console
    • 🛠 Fix wrong table aliases in complex queries
    • 🛠 Fix query optimization code for complex queries
  • v0.7.5

    July 24, 2018

    🛠 Bugfixes

    • 🛠 query.where and query.filter method bug introduced in 0.7.4 was fixed
  • v0.7.4

    July 23, 2018

    Major features

    • 📄 Hybrid methods and properties added: https://docs.ponyorm.com/entities.html#hybrid-methods-and-properties
    • 👍 Allow to base queries on another queries: select(x.a for x in prev_query if x.b)
    • ➕ Added support of Python 3.7
    • ➕ Added support of PyPy
    • group_concat() aggregate function added
    • 📦 pony.flask subpackage added for integration with Flask

    Other features

    • distinct option added to aggregate functions
    • 👌 Support of explicit casting to float and bool in queries

    👌 Improvements

    • Apply @cut_traceback decorator only when pony.MODE is 'INTERACTIVE'

    🛠 Bugfixes

    • In SQLite3 LIKE is case sensitive now
    • #249: Fix incorrect mixin used for Timedelta
    • #251: correct dealing with qualified table names
    • #301: Fix aggregation over JSON Column
    • 👍 #306: Support of frozenset constants added
    • #308: Fixed an error when assigning JSON attribute value to the same attribute: obj.json_attr = obj.json_attr
    • #313: Fix missed retry on exception raised during db_session. __exit__
    • 👀 #314: Fix AttributeError: 'NoneType' object has no attribute 'seeds'
    • #315: Fix attribute lifting for JSON attributes
    • #321: Fix KeyError on obj.delete()
    • #325: duplicating percentage sign in raw SQL queries without parameters
    • #331: Overriding __len__ in entity fails
    • #336: entity declaration serialization
    • #357: reconnect after PostgreSQL server closed the connection unexpectedly
    • 🛠 Fix Python implementation of between() function and rename arguments: between(a, x, y) ->
      between(x, a, b)
    • 🛠 Fix retry handling: in PostgreSQL and Oracle an error can be raised during commit
    • 🛠 Fix optimistic update checks for composite foreign keys
    • Don't raise OptimisticCheckError if db_session is not optimistic
    • Handling incorrect datetime values in MySQL
    • 👌 Improved ImportError exception messages when MySQLdb, pymysql, psycopg2 or psycopg2cffi driver was not found
    • 🛠 desc() function fixed to allow reverse its effect by calling desc(desc(x))
    • __contains__ method should check if objects belong to the same db_session
    • 🛠 Fix pony.MODE detection; mod_wsgi detection according to official doc
    • 🛠 A lot of inner fixes