<head>
    <link rel="canonical" href="https://ignite.apache.org/releases/pyignite/0.4.0/release_notes.html" />
    <!-- Yandex.Metrika counter -->
        <script type="text/javascript" >
          (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
          m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
          (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
        
          ym(72949126, "init", {
               clickmap:true,
               trackLinks:true,
               accurateTrackBounce:true,
               webvisor:true
          });
        </script>
        <noscript><div><img src="https://mc.yandex.ru/watch/72949126" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
        <!-- /Yandex.Metrika counter -->
    <script type='text/javascript'>
        window.__lo_site_id = 284467;
        
          (function() {
            var wa = document.createElement('script'); wa.type = 'text/javascript'; wa.async = true;
            wa.src = 'https://d10lpsik1i8c69.cloudfront.net/w.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wa, s);
            })();
          </script>
    
    
    
        <style>h1 {    color: #113847;    font-size: 33px;    font-weight: bold;    margin: 30px 0 15px 0;    padding-bottom: 7px;    width: 700px;}h2 {  border-bottom: 2px solid #ccc;     color: #113847;     font-size: 29px;     font-weight: normal;     margin: 30px 0 15px 0;     padding-bottom: 7px;  width: 700px; }a {      color: #cc0000;      text-decoration: none;  }span {    color: #cc0000;}a:hover {    text-decoration: underline;}ul,ol {    list-style: disc;    margin-left: 30px;}ul li,ol li {    margin: 5px 0;}p.description {    width: 700px;}</style>
    
        <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
    
      ga('create', 'UA-61232409-1', 'auto');
      ga('send', 'pageview');
    
        </script></head>
<body>
    <h1>Apache IGNITE python thin client 0.4.0</h1>
            <div></div>
    <ul>
        <li> Added partition awareness support</li>
        <li> Added asyncio support</li>
        <li> Added C module to speedup hashcode calculation</li>
        <li> Implemented context management for connection method</li>
        <li> Implemented cursors and context management for ScanQuery, SqlQuery and SqlFieldsQuery</li>
        <li> Added the ability to activate/deactivate the cluster</li>
        <li> Implemented support for big-endianness</li>
        <li> Implemented support of password for certificates</li>
        <li> Fixed performance issues while working with big bytearrays and binary objects</li>
        <li> Fixed serialization/deserialization of cache configuration</li>
        <li> Fixed handling of null fields</li>
        <li> Fixed SQL API</li>
        <li> Fixed UUID serialization/deserialization</li>
        <li> Fixed nested complex objects</li>
        <li> Fixed incorrect hash code calculation for classes as composite keys</li>
        <li> Fixed hashing of complex object</li>
        <li> Fixed insert and select VARBINARY data type through SQL</li>
        <li> Fixed wrong order of the SQL query result</li>
        <li> Fixed handling of bytes and bytearrays</li>
        <li> Fixed bool arrays handling</li>
        <li> Fixed cache.get_size with non-default PeekModes</li>
    </ul>
</body>
