From: Paul Marquess Date: Mon, 30 Jul 2001 22:54:37 +0000 (+0100) Subject: DB_File-1.78 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=39793c41fa47cd0f2279753690de973d31394375;p=p5sagit%2Fp5-mst-13.2.git DB_File-1.78 Message-ID: p4raw-id: //depot/perl@11508 --- diff --git a/ext/DB_File/Changes b/ext/DB_File/Changes index 6d1ddb1..da6af57 100644 --- a/ext/DB_File/Changes +++ b/ext/DB_File/Changes @@ -355,3 +355,14 @@ * Modified Makefile.PL to only enable the warnings pragma if using perl 5.6.1 or better. + +1.78 30th July 2001 + + * the test in Makefile.PL for AIX used -plthreads. Should have been + -lpthreads + + * merged Core patches + 10372, 10335, 10372, 10534, 10549, 10643, 11051, 11194, 11432 + + * added documentation patch regarding duplicate keys from Andrew Johnson + diff --git a/ext/DB_File/DB_File.pm b/ext/DB_File/DB_File.pm index 0a69214..289ac0a 100644 --- a/ext/DB_File/DB_File.pm +++ b/ext/DB_File/DB_File.pm @@ -1,8 +1,8 @@ # DB_File.pm -- Perl 5 interface to Berkeley DB # # written by Paul Marquess (Paul.Marquess@btinternet.com) -# last modified 26th April 2001 -# version 1.77 +# last modified 30th July 2001 +# version 1.78 # # Copyright (c) 1995-2001 Paul Marquess. All rights reserved. # This program is free software; you can redistribute it and/or @@ -151,7 +151,7 @@ use vars qw($VERSION @ISA @EXPORT $AUTOLOAD $DB_BTREE $DB_HASH $DB_RECNO use Carp; -$VERSION = "1.77" ; +$VERSION = "1.78" ; #typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE; $DB_BTREE = new DB_File::BTREEINFO ; @@ -943,6 +943,35 @@ You cannot change the ordering once the database has been created. Thus you must use the same compare function every time you access the database. +=item 3 + +Duplicate keys are entirely defined by the comparison function. +In the case-insensitive example above, the keys: 'KEY' and 'key' +would be considered duplicates, and assigning to the second one +would overwirte the first. If duplicates are allowed for (with the +R_DUPS flag discussed below), only a single copy of duplicate keys +is stored in the database --- so (again with example above) assigning +three values to the keys: 'KEY', 'Key', and 'key' would leave just +the first key: 'KEY' in the database with three values. For some +situations this results in information loss, so care should be taken +to provide fully qualified comparison functions when necessary. +For example, the above comparison routine could be modified to +additionally compare case-sensitively if two keys are equal in the +case insensitive comparison: + + sub compare { + my($key1, $key2) = @_; + lc $key1 cmp lc $key2 || + $key1 cmp $key2; + } + +And now you will only have duplicates when the keys themselves +are truly the same. (note: in versions of the db library prior to +about November 1996, such duplicate keys were retained so it was +possible to recover the original keys in sets of keys that +compared as equal). + + =back =head2 Handling Duplicate Keys diff --git a/ext/DB_File/DB_File.xs b/ext/DB_File/DB_File.xs index c1040cc..d2dc572 100644 --- a/ext/DB_File/DB_File.xs +++ b/ext/DB_File/DB_File.xs @@ -3,8 +3,8 @@ DB_File.xs -- Perl 5 interface to Berkeley DB written by Paul Marquess - last modified 26th April 2001 - version 1.77 + last modified 30th July 2001 + version 1.78 All comments/suggestions/problems are welcome @@ -92,6 +92,7 @@ needed to be changed. 1.76 - No change to DB_File.xs 1.77 - Tidied up a few types used in calling newSVpvn. + 1.78 - Core patch 10335, 10372, 10534, 10549, 11051 included. */ @@ -126,28 +127,12 @@ * shortly #included by the ) __attribute__ to the possibly * already defined __attribute__, for example by GNUC or by Perl. */ -#if DB_VERSION_MAJOR_CFG < 2 - -#undef __attribute__ - -/* Since we dropped the gccish definition of __attribute__ we will want - * to redefine dNOOP, however (so that dTHX continues to work). Yes, - * all this means that we can't do attribute checking on the DB_File, - * boo, hiss. */ -#undef dNOOP -#define dNOOP extern int Perl___notused -/* Ditto for dXSARGS. */ -#undef dXSARGS -#define dXSARGS \ - dSP; dMARK; \ - I32 ax = mark - PL_stack_base + 1; \ - I32 items = sp - mark - +/* #if DB_VERSION_MAJOR_CFG < 2 */ +#ifndef DB_VERSION_MAJOR +# undef __attribute__ #endif -/* avoid -Wall; DB_File xsubs never make use of `ix' setup for ALIASes */ -#undef dXSI32 -#define dXSI32 dNOOP + /* If Perl has been compiled with Threads support,the symbol op will be defined here. This clashes with a field name in db.h, so get rid of it. @@ -162,9 +147,33 @@ # include #endif -#ifdef CAN_PROTOTYPE -extern void __getBerkeleyDBInfo(void); -#endif +/* Wall starts with 5.7.x */ + +#if PERL_REVISION > 5 || (PERL_REVISION == 5 && PERL_VERSION >= 7) + +/* Since we dropped the gccish definition of __attribute__ we will want + * to redefine dNOOP, however (so that dTHX continues to work). Yes, + * all this means that we can't do attribute checking on the DB_File, + * boo, hiss. */ +# ifndef DB_VERSION_MAJOR + +# undef dNOOP +# define dNOOP extern int Perl___notused + + /* Ditto for dXSARGS. */ +# undef dXSARGS +# define dXSARGS \ + dSP; dMARK; \ + I32 ax = mark - PL_stack_base + 1; \ + I32 items = sp - mark + +# endif + +/* avoid -Wall; DB_File xsubs never make use of `ix' setup for ALIASes */ +# undef dXSI32 +# define dXSI32 dNOOP + +#endif /* Perl >= 5.7 */ #ifndef pTHX # define pTHX @@ -446,6 +455,10 @@ typedef DBT DBTKEY ; } +#ifdef CAN_PROTOTYPE +extern void __getBerkeleyDBInfo(void); +#endif + /* Internal Global Data */ static recno_t Value ; static recno_t zero = 0 ; diff --git a/ext/DB_File/version.c b/ext/DB_File/version.c index 2801ffa..48c29a0 100644 --- a/ext/DB_File/version.c +++ b/ext/DB_File/version.c @@ -3,8 +3,8 @@ version.c -- Perl 5 interface to Berkeley DB written by Paul Marquess - last modified 16th January 2000 - version 1.73 + last modified 30th July 2001 + version 1.78 All comments/suggestions/problems are welcome