summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorPaul Marquess <paul.marquess@btinternet.com>2001-07-30 23:54:37 +0100
committerJarkko Hietaniemi <jhi@iki.fi>2001-07-31 00:17:38 +0000
commit39793c41fa47cd0f2279753690de973d31394375 (patch)
treefb0a4754f072da9aa6754ee540b0a69423a7d05b /ext
parentfaf52077314b44c5bedc5d7fe06835bf98c07f69 (diff)
downloadperl-39793c41fa47cd0f2279753690de973d31394375.tar.gz
DB_File-1.78
Message-ID: <AIEAJICLCBDNAAOLLOKLGELNCLAA.Paul_Marquess@Yahoo.co.uk> p4raw-id: //depot/perl@11508
Diffstat (limited to 'ext')
-rw-r--r--ext/DB_File/Changes11
-rw-r--r--ext/DB_File/DB_File.pm35
-rw-r--r--ext/DB_File/DB_File.xs63
-rw-r--r--ext/DB_File/version.c4
4 files changed, 83 insertions, 30 deletions
diff --git a/ext/DB_File/Changes b/ext/DB_File/Changes
index 6d1ddb14e1..da6af577cb 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 0a69214d7c..289ac0a65c 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 c1040cca47..d2dc572aba 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 <Paul.Marquess@btinternet.com>
- 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 <db.h>) __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 <db.h>
#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 2801ffa2c7..48c29a0e6f 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 <Paul.Marquess@btinternet.com>
- last modified 16th January 2000
- version 1.73
+ last modified 30th July 2001
+ version 1.78
All comments/suggestions/problems are welcome