mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 10:30:33 +03:00 
			
		
		
		
	An EAN beginning with 979 (but not 9790 - those are ISMN's) are accepted as ISBN numbers, but they cannot be represented in the old, 10-digit ISBN format. They must be output in the new 13-digit ISBN-13 format. We printed out an incorrect value for those. Also add a regression test, to test this and some other basic functionality of the module. Patch by Fabien Coelho. This fixes bug #13442, reported by B.Z. Backpatch to 9.1, where we started to recognize ISBN-13 numbers.
		
			
				
	
	
		
			105 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
| --
 | |
| -- Test ISN extension
 | |
| --
 | |
| 
 | |
| CREATE EXTENSION isn;
 | |
| 
 | |
| --
 | |
| -- test valid conversions
 | |
| --
 | |
| SELECT '9780123456786'::EAN13, -- old book
 | |
|        '9790123456785'::EAN13, -- music
 | |
|        '9791234567896'::EAN13, -- new book
 | |
|        '9771234567898'::EAN13, -- serial
 | |
|        '0123456789012'::EAN13, -- upc
 | |
|        '1234567890128'::EAN13;
 | |
| 
 | |
| SELECT '9780123456786'::ISBN,
 | |
|        '123456789X'::ISBN,
 | |
|        '9780123456786'::ISBN13::ISBN,
 | |
|        '9780123456786'::EAN13::ISBN;
 | |
| 
 | |
| SELECT -- new books, shown as ISBN13 even for ISBN...
 | |
|        '9791234567896'::ISBN,
 | |
|        '9791234567896'::ISBN13::ISBN,
 | |
|        '9791234567896'::EAN13::ISBN;
 | |
| 
 | |
| SELECT '9780123456786'::ISBN13,
 | |
|        '123456789X'::ISBN13,
 | |
|        '9791234567896'::ISBN13,
 | |
|        '9791234567896'::EAN13::ISBN13;
 | |
| 
 | |
| SELECT '9790123456785'::ISMN,
 | |
|        '9790123456785'::EAN13::ISMN,
 | |
|        'M123456785'::ISMN,
 | |
|        'M-1234-5678-5'::ISMN;
 | |
| 
 | |
| SELECT '9790123456785'::ISMN13,
 | |
|        'M123456785'::ISMN13,
 | |
|        'M-1234-5678-5'::ISMN13;
 | |
| 
 | |
| SELECT '9771234567003'::ISSN,
 | |
|        '12345679'::ISSN;
 | |
| 
 | |
| SELECT '9771234567003'::ISSN13,
 | |
|        '12345679'::ISSN13,
 | |
|        '9771234567898'::ISSN13,
 | |
|        '9771234567898'::EAN13::ISSN13;
 | |
| 
 | |
| SELECT '0123456789012'::UPC,
 | |
|        '0123456789012'::EAN13::UPC;
 | |
| 
 | |
| --
 | |
| -- test invalid checksums
 | |
| --
 | |
| SELECT '1234567890'::ISBN;
 | |
| SELECT 'M123456780'::ISMN;
 | |
| SELECT '12345670'::ISSN;
 | |
| SELECT '9780123456780'::ISBN;
 | |
| SELECT '9791234567890'::ISBN13;
 | |
| SELECT '0123456789010'::UPC;
 | |
| SELECT '1234567890120'::EAN13;
 | |
| 
 | |
| --
 | |
| -- test invalid conversions
 | |
| --
 | |
| SELECT '9790123456785'::ISBN; -- not a book
 | |
| SELECT '9771234567898'::ISBN; -- not a book
 | |
| SELECT '0123456789012'::ISBN; -- not a book
 | |
| 
 | |
| SELECT '9790123456785'::ISBN13; -- not a book
 | |
| SELECT '9771234567898'::ISBN13; -- not a book
 | |
| SELECT '0123456789012'::ISBN13; -- not a book
 | |
| 
 | |
| SELECT '9780123456786'::ISMN; -- not music
 | |
| SELECT '9771234567898'::ISMN; -- not music
 | |
| SELECT '9791234567896'::ISMN; -- not music
 | |
| SELECT '0123456789012'::ISMN; -- not music
 | |
| 
 | |
| SELECT '9780123456786'::ISSN; -- not serial
 | |
| SELECT '9790123456785'::ISSN; -- not serial
 | |
| SELECT '9791234567896'::ISSN; -- not serial
 | |
| SELECT '0123456789012'::ISSN; -- not serial
 | |
| 
 | |
| SELECT '9780123456786'::UPC; -- not a product
 | |
| SELECT '9771234567898'::UPC; -- not a product
 | |
| SELECT '9790123456785'::UPC; -- not a product
 | |
| SELECT '9791234567896'::UPC; -- not a product
 | |
| 
 | |
| SELECT 'postgresql...'::EAN13;
 | |
| SELECT 'postgresql...'::ISBN;
 | |
| SELECT 9780123456786::EAN13;
 | |
| SELECT 9780123456786::ISBN;
 | |
| 
 | |
| --
 | |
| -- test some comparisons, must yield true
 | |
| --
 | |
| SELECT '12345679'::ISSN = '9771234567003'::EAN13 AS "ok",
 | |
|        'M-1234-5678-5'::ISMN = '9790123456785'::EAN13 AS "ok",
 | |
|        '9791234567896'::EAN13 != '123456789X'::ISBN AS "nope";
 | |
| 
 | |
| --
 | |
| -- cleanup
 | |
| --
 | |
| DROP EXTENSION isn;
 |