Version 1.5 of ManagedEsent released. PersistentDictionary goodness

There is a new release of ManagedEsent on Codeplex. There are some new APIs, constants for the new Windows 7 ESENT features, bugfixes and performance improvements.  There is also a new Esent.Collections.dll which contains a PersistentDictionary generic class. This is a drop-in compatible replacement for the generic Dictionary or SortedDictionary classes for applications that need…

1

6 New ESENT features in Windows 7

A quick look at some of the new features that are available in the Windows 7 version of ESENT. You’ll need esent.h from the Windows 7 SDK to see these definitions: 1. Column Compression Columns of type JET_coltypLongBinary and JET_coltypLongText can now be compressed. There are two ways of enabling compression. Create the column with…

1

Multimethods in C# 4.0 with ‘dynamic’

(Continuing from the post on implementing the Visitor pattern in C# 4.0) A virtual method is polymorphic in one dimension (the runtime class of the object the method is attached to). Multimethods (multiple dispatch) are polymorphic in multiple dimensions, which can be very useful in some cases. The dynamic keyword in C# 4.0 allows for…

4

Implementing the Visitor pattern with the ‘dynamic’ feature of C# 4.0

A lot of the talk around the new dynamic keyword in C# 4.0 (available in the beta of Visual Studio 2010) is around interaction with external components (dynamic languages, HTML DOM, COM) but I’m most excited about being able to stragetically add dynamic lookup to an ordinary C# program. Normally, when an object is passed…

1

Kobe – the Web 2.0 application that wasn’t

Microsoft has released Kobe, “a getting started resource kit for planning, architecting, and implementing Web 2.0 applications and services using the Microsoft Platform” and a lot of the response has been quite critical (Ayende, Karl Seguin). While the code, architecture and lack of tests have all been thoroughly criticized I think there is an even higher-level…

0

iiobo C++ ESE library

(I saw a link to this from the Wikipedia entry on esent) A company called iiobo has released a C++ toolkit for using esent (I’m guessing they developed it for internal use). I haven’t looked at the code, but their website says that they have: “C++ classes that provide a higher level abstraction of Extensible…

0

Version 1.2 of ManagedEsent available on CodePlex

Version 1.2 of the ManagedEsent interop layer for the ESENT database engine is now available on CodePlex. The three most useful additions here are: JetEscrowUpdate JetIntersectIndexes Helper functions to set/retrieve columns as DateTime JetEscrowUpdate works like Interlocked.Add, allowing a column to be updated in an atomic fashion by mutliple sessions without conflicts. There are several restrictions — the column must have…

0

Why does JET_coltypBit return 0xFF when set to true?

On our internal mailing list a user asked “When I retrieve a column of type JET_coltypBit that is set to true, why do I get 0xFF and not 0x1”?    My co-worker Ketan had to reach deep into his memory for the answer   In the very old days, the Jet API was designed as a replacement…

0

Unsigned considered harmful

(or is “xxx considered harmful” completely worn out as a meme?)    I believe that, in general, people should avoid unsigned variables, even when dealing with quantities which should only be positive. I have three major problems with unsigned variables:   Subtraction doesn’t always make sense Unsigned numbers are used to model positive integers and positive integers…

5

JET_COLUMNID scope

A JET_COLUMNID identifies a column inside of a table (it is actually an index into an internal per-table array of column definition structures). The database meta-data provides a mapping from column name to columnid. The mapping of column names to columnids can change when a database is defragmented by esentutl (esentutl /d). This means that each time…

0