<?xml version='1.0' encoding='utf-8'?>
<feed xmlns='http://www.w3.org/2005/Atom'>
<id>page58</id>
<title>FAQ's</title>
<updated>2009-11-24T17:52:22.136-08:00</updated>
<link href='http://isam.ca/support/faq.html' rel='self'/>
<author></author><entry>
<title type='text'>Multi-threading deadlock problems</title>
<id>Multi-threading_deadload_proble</id>
<updated>2009-11-24T17:52:22.136-08:00</updated>
<link href='http://isam.ca/support/faq.html#Multi-threading_deadload_proble'/>
<content type='html'>
 If you&apos;re running a multi-threaded DISAM program on Linux Ubuntu, with multiple processors and are seeing what appears to be a deadlock scenario, try switching to the latest Ubuntu 9.1. We have been able to confirm that some kernel versions that run NPTL threads on multi-processor systems run into what appears to be a bug in the kernel or NPTL threads library, specifically a futex_lock failure that kills the thread leaving other waiting threads in a permanent wait condition. To date we have not been able to duplicate this bug with the latest version of Ubuntu 9.1, specifically kernel 2.6.31-14 server. NPTL version 2.10.1.
 </content>
 </entry>
<entry>
<title type='text'>Can  DISAM96/DISAM7 be built as a 64-bit library to go into a 64-bit application?</title>
<id>Can__DISAM96_be_built_as_a_64-b</id>
<updated>2009-10-12T10:52:54.179-07:00</updated>
<link href='http://isam.ca/support/faq.html#Can__DISAM96_be_built_as_a_64-b'/>
<content type='html'>
 &lt;span style=&quot;font-size:14px; &quot;&gt;DISAM96 and DISAM7&amp;nbsp;can be compiled to allow file offsets which are normally defined as 32bit longs to be defined as int64 types..see definition of OFFT type in isport.h or isbase.h.&amp;nbsp; By setting ISHUGE to 1 OFFT will be defined as int64_t.&amp;nbsp; Check your compiler options for -D_LARGEFILE64_SOURCE and &amp;nbsp;-D_FILE_OFFSET_BITS=64 or similar settings which would be required for compiling for 64bit in a 32bit environment. Do not set ISHUGE for native 64bit environments.&lt;/span&gt;
 </content>
 </entry>
<entry>
<title type='text'>Size of resulting index versus size of data</title>
<id>Size_of_resulting_index_versus_</id>
<updated>2009-10-12T10:52:32.494-07:00</updated>
<link href='http://isam.ca/support/faq.html#Size_of_resulting_index_versus_'/>
<content type='html'>
 &lt;span style=&quot;font-size:14px; &quot;&gt;512 index node size, dup width of 2 bytes and assuming no index compression: 
100 byte key value, with 2 keys&amp;nbsp; 
&lt;br&gt;&lt;br&gt;
one 512 byte node would be allocated for every 4 - 100 byte index values ( there is extra space per node 2 bytes for the #bytes used in node&amp;nbsp; 
as well as 4 bytes per value for record# and 2 bytes per value for dup# ) 
so 10 records of 100 bytes would mean 
4 index values per node = 3 nodes * 512bytes * # file indexes 
&lt;br&gt;&lt;br&gt;
key length - 100 bytes 
+ 4 bytes - record# 
+ 2 bytes - dup# 
---------- 
106 bytes per index value 
&lt;br&gt;&lt;br&gt;&lt;br /&gt;512 - index header record 
+ 3 * 512 - 10 index values for key 1&amp;nbsp; 
+ 3 * 512 - 10 index values for key 2 
--------- 
3584 bytes for index values + header record for .idx file 
&lt;br&gt;&lt;br&gt;&lt;br /&gt;and 101 per data record * 10 records = 1010 bytes for the .dat file. 
&lt;br&gt;&lt;br&gt;&lt;br /&gt;1024 index block size and 4 byte dup width ( now standard ) 
9 index values in 1 node, another node for the 10th value 
&lt;br&gt;&lt;br&gt;&lt;br /&gt;1024 - index header record + 
+ 2 * 1024 - 10 index values for key 1 
+ 2 * 1024 - 10 index values for key 2 
--------- 
5120 bytes bytes for .idx 
&lt;br&gt;&lt;br&gt;
Once a node is full, that node is split into to 2 nodes and another level node 
is created. This forms the index chain. The first node is the level 0 node and 
level 0 nodes point directly to data records. Higher level nodes point to 
the index record of the lower level node in the index chain. &lt;br /&gt;&lt;/span&gt;
 </content>
 </entry>
<entry>
<title type='text'>Rebuilding and reclaiming space using Disam&apos;s dpack</title>
<id>Rebuilding_and_reclaiming_space</id>
<updated>2009-10-12T10:52:00.364-07:00</updated>
<link href='http://isam.ca/support/faq.html#Rebuilding_and_reclaiming_space'/>
<content type='html'>
 &lt;span style=&quot;font-size:14px; &quot;&gt;When a record is deleted from an isam file, it is marked for deletion in the .dat and the corresponding index values are physically removed from the index node. ( One 512 or 1024 block = one index record ). When an index node becomes empty due to all key values in the node being deleted, then the node itself is removed from the .idx file. 
&lt;br&gt;&lt;br&gt;&lt;br /&gt;
At any time an index node may or may not be full, if a deletion leaves space in an index node..that space will only be reused if a new record insert has a key value that would compare as next or prev against existing key values in that node. In other words an index node (used bytes) shrinks or expands( up to 512 or 1024 max bytes ) due to deletions and 
insertions. An insertion does not reuse any available index node with available space..it must be the index node where the comparable key values reside. 
&lt;br&gt;&lt;br&gt;&lt;br /&gt;
Depending on the index values on new record inserts, index node space that has been freed from previously deleted entries may not ever be reused unless new key values compare as the next key value to an existing key value in that node. 
&lt;br&gt;&lt;br&gt;&lt;br /&gt;
There is no ratio or percentage that can be assumed about how much unused space is in a index node. That depends on the entries deleted and subsequent inserts if any. If all records in a file are removed the .idx file will shrink in size because nodes will be empty and empty nodes are physically deleted. 
&lt;br&gt;&lt;br&gt;&lt;br /&gt;
The only way to pack both the .dat and .idx is to run Disam96&apos;s dpack program.&lt;/span&gt;
 </content>
 </entry>
<entry>
<title type='text'>What are the differences between DISAM 3.x and DISAM96 and DISAM7?</title>
<id>What_are_the_differences_betwee</id>
<updated>2009-10-12T10:51:35.915-07:00</updated>
<link href='http://isam.ca/support/faq.html#What_are_the_differences_betwee'/>
<content type='html'>
 &lt;span style=&quot;font-size:14px; &quot;&gt;DISAM96 is a complete rewrite that resembles D-ISAM 3.x in almost no way as far as the actual code is concerned. DISAM96 is cleaner, more efficient code with many added options such as multithread capabilities, large file support for platforms that allow &gt; 2 gig file sizes, locking compliance with both C-ISAM 4.1 as well as C-ISAM 5.0 and 7.1. (C-ISAM changed locking schemes as of 5.0 ), full cobol isstat variable support, MF cobol filename support, and ease in compilation of both static and dll libraries for MS platforms.&amp;nbsp;&amp;nbsp;&lt;br /&gt;DISAM7 is the latest DISAM next generation of DISAM96. DISAM7 allows twice the number of data records compared with D-ISAM and DISAM96. DISAM7 allows for isam file schema storage within the isam file, formated reported output of data from the file via the schema as well as an enhancement to the C-ISAM limit on variable length record max, see dvlrebld.ref for more details.&lt;/span&gt;
 </content>
 </entry>
<entry>
<title type='text'>What are the maximums allowable with DISAM?</title>
<id>What_are_the_maximums_allowable</id>
<updated>2009-10-12T10:51:06.422-07:00</updated>
<link href='http://isam.ca/support/faq.html#What_are_the_maximums_allowable'/>
<content type='html'>
 &lt;span style=&quot;font-size:14px; &quot;&gt;Most maximums such as file sizes/open files and such are determined by the os. DISAM96/DISAM7 will allow index sizes limited only by the index block factor, to increase the default maximum for the index size increase the ISIDXBLK default setting by increments of 512 bytes..the default is set to 1024 and allows a max index size of around 990 bytes. DISAM96/DISAM7 as of version 6.12 allows support for files greater than the standard 2 gig limit for those operating systems that support int64 types. &lt;br /&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;DISAM sets no limits for the number of indexes in a file or the number of parts per key.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;
 </content>
 </entry>
<entry>
<title type='text'>What&apos;s involved in converting from C-ISAM or D-ISAM 3.x to DISAM96/DISAM7?</title>
<id>Whats_involved_in_converting_fr</id>
<updated>2009-10-12T10:50:33.436-07:00</updated>
<link href='http://isam.ca/support/faq.html#Whats_involved_in_converting_fr'/>
<content type='html'>
 &lt;span style=&quot;font-size:14px; &quot;&gt;If converting from C-ISAM to D-ISAM 3.x the only change you will need to make is to create an isam.h that only includes &lt;disam.h&gt;. Compile the D-ISAM 3.x library and recompile your application code and link to the D-ISAM library.&lt;br /&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:14px; &quot;&gt;If converting from C-ISAM or D-ISAM 3.x to DISAM96 or DISAM7, you will need to ensure that references to isam.h or disam.h are replaced with iswrap.h. DISAM96 and DISAM7&amp;nbsp;no longer use the isfdmap structure that is internal to D-ISAM 3.x, DISAM96 and DISAM7&amp;nbsp;provide analogs for some of the more common values via common dictionary access routines.&lt;/span&gt;
 </content>
 </entry>
<entry>
<title type='text'>I&apos;m sure I have compiled the library properly, and I am sure I have the right linker commands, but I keep getting unresolved references to the base ( isXxxx() ) library functions.</title>
<id>Im_sure_I_have_compiled_the_li1</id>
<updated>2009-10-12T10:49:58.730-07:00</updated>
<link href='http://isam.ca/support/faq.html#Im_sure_I_have_compiled_the_li1'/>
<content type='html'>
 &lt;span style=&quot;font-size:14px; &quot;&gt;DISAM96/DISAM7 specific - If you&apos;re linking wrap ( isxxxx() ) calls then it is possible your linker resolves references canonically - in a single pass through the listed libraries. Linker objects should be listed in order of precedence - object module(s), wrap lib, base lib.&lt;/span&gt;
 </content>
 </entry>
<entry>
<title type='text'>I&apos;m sure I have compiled the library properly, and I&apos;m sure I have compiled and linked my application properly but nothing seems to work correctly.</title>
<id>Im_sure_I_have_compiled_the_lib</id>
<updated>2009-10-12T10:41:13.270-07:00</updated>
<link href='http://isam.ca/support/faq.html#Im_sure_I_have_compiled_the_lib'/>
<content type='html'>
 &lt;span style=&quot;font-size:14px; &quot;&gt;A. Ensure your including the correct header information, if compiling or converting from C-ISAM you&apos;ll need to change references from isam.h to disam.h ( versions 3.x ) or iswrap.h ( DISAM96/DISAM7 )..or simply create a dummy isam.h that only includes #include &lt;disam.h&gt; or &lt;iswrap.h&gt;.&lt;br /&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;B. Disam requires that that library be compiled with signed char types as the default. Ensure the compiler is defaulting to signed char types on compile or set the compiler flag that generates signed char types by default.&lt;/span&gt;
 </content>
 </entry>
<entry>
<title type='text'>Is D-ISAM compatible with Informix C-ISAM?</title>
<id>Is_D-ISAM_compatible_with_Infor</id>
<updated>2009-10-12T10:40:49.072-07:00</updated>
<link href='http://isam.ca/support/faq.html#Is_D-ISAM_compatible_with_Infor'/>
<content type='html'>
 &lt;span style=&quot;font-size:14px; &quot;&gt;D-ISAM 3.x, DISAM96 and DISAM7 are all&amp;nbsp;file compatible with C-ISAM. D-ISAM 3.x, DISAM96/DISAM7 will run concurrent locking with C-ISAM Version 4.1 executables. DISAM96 and DISAM7&amp;nbsp;allows for configuration settings that will&amp;nbsp;enable concurrent locking with C-ISAM 5.1 and greater. ( &amp;nbsp;Currently this applies to unix fcntl() environments only ) This is only of importance if you are planning to run C-ISAM executables against D-ISAM/DISAM96/DISAM7 executables. The D-ISAM 3.x calls and DISAM96/DISAM7 wrap calls are fully compatible with the standard C-ISAM isam function calls.&lt;/span&gt; 
 </content>
 </entry>
<entry>
<title type='text'>Performance Comparisons</title>
<id>Performance_Comparisons</id>
<updated>2009-10-11T22:49:49.500-07:00</updated>
<link href='http://isam.ca/support/faq.html#Performance_Comparisons'/>
<content type='html'>
 Some Performance Comparisons between D-ISAM Version 3.x, DISAM96 and Informix&apos; C-ISAM 4.x&lt;br /&gt;  Tests were 15000 cycles run on an Intel Pentium-133 running SCO Unix ODT-5&lt;br /&gt;&lt;img class=&quot;imageStyle&quot; alt=&quot;&quot; src=&quot;http://isam.ca/support/faq_files/pasted-graphic.jpg&quot; width=&quot;508&quot; height=&quot;340&quot; /&gt;&lt;br /&gt;
 </content>
 </entry>

</feed>

