Quellcode durchsuchen

fixed mantis-1643 (CRC32 result is not correctly compared as unsigned 32-bit integer)

Ilya Kuznetsov vor 10 Jahren
Ursprung
Commit
ed232d735d
3 geänderte Dateien mit 6 neuen und 1 gelöschten Zeilen
  1. 1 1
      src/sphinxexpr.cpp
  2. 0 0
      test/test_125/model.bin
  3. 5 0
      test/test_125/test.xml

+ 1 - 1
src/sphinxexpr.cpp

@@ -548,7 +548,7 @@ struct Expr_Crc32_c : public Expr_Unary_c
 			SafeDeleteArray ( pStr );
 		return uCrc;
 	}
-	virtual int64_t Int64Eval ( const CSphMatch & tMatch ) const { return IntEval ( tMatch ); }
+	virtual int64_t Int64Eval ( const CSphMatch & tMatch ) const { return (int64_t)(DWORD)IntEval ( tMatch ); }
 };
 
 

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
test/test_125/model.bin


+ 5 - 0
test/test_125/test.xml

@@ -301,6 +301,11 @@ INSERT INTO string_table VALUES
 <sphinxql>select id, string_value from strings where string_value not in ('')</sphinxql>
 <sphinxql>select id, to_string(id) as p from strings where p in('1','3')</sphinxql>
 
+<!-- CRC32 as BIGINT -->
+<sphinxql>select CRC32('4759') AS test_crc FROM strings LIMIT 1</sphinxql>
+<sphinxql>select BIGINT(CRC32('4759')) AS test_crc FROM strings LIMIT 1</sphinxql>
+<sphinxql>select CRC32('4759') AS test_crc, CRC32('4759')=2182940993 AS is_crc FROM strings LIMIT 1</sphinxql>
+
 </sphqueries>
 
 </test>

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.