Skip to content

Commit

Permalink
Merge branch 'babelfish-for-postgresql:BABEL_4_X_DEV' into jira-babel…
Browse files Browse the repository at this point in the history
…-4953
  • Loading branch information
Deepesh125 authored Jul 26, 2024
2 parents be2c456 + 39062e7 commit f52f570
Show file tree
Hide file tree
Showing 280 changed files with 74,912 additions and 796 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ runs:
mvn test
export inputFilesPath=input
for filename in $(grep -v "^ignore.*\|^#.*\|^cmd.*\|^all.*\|^$" upgrade/$base_dir/schedule); do
sed -i "s/$filename[ ]*$/$filename-vu-verify\\n$filename-vu-cleanup/g" upgrade/$base_dir/schedule
sed -i "s/\b$filename[ ]*\b$/$filename-vu-verify\\n$filename-vu-cleanup/g" upgrade/$base_dir/schedule
done
export scheduleFile=upgrade/$base_dir/schedule
mvn test
Expand Down
2 changes: 1 addition & 1 deletion .github/composite-actions/run-verify-tests/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ runs:
fi
for filename in $(grep -v "^ignore.*\|^#.*\|^cmd.*\|^all.*\|^$" upgrade/$base_dir/schedule); do
sed -i "s/$filename[ ]*$/$filename-vu-verify\\n$filename-vu-cleanup/g" upgrade/$base_dir/schedule
sed -i "s/\b$filename[ ]*\b$/$filename-vu-verify\\n$filename-vu-cleanup/g" upgrade/$base_dir/schedule
done
export scheduleFile=upgrade/$base_dir/schedule
mvn test
Expand Down
2 changes: 1 addition & 1 deletion .github/composite-actions/setup-base-version/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ runs:
export isUpgradeTestMode=false
export inputFilesPath=input
for filename in $(grep -v "^ignore.*\|^#.*\|^cmd.*\|^all.*\|^$" upgrade/$base_dir/schedule); do
sed -i "s/$filename[ ]*$/$filename-vu-prepare/g" upgrade/$base_dir/schedule
sed -i "s/\b$filename[ ]*\b$/$filename-vu-prepare/g" upgrade/$base_dir/schedule
done
export scheduleFile=upgrade/$base_dir/schedule
mvn test
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ contrib/babelfishpg_tsql/antlr/cmake_install.cmake
contrib/babelfishpg_tsql/pl_reserved_kwlist_d.h
contrib/babelfishpg_tsql/pl_unreserved_kwlist_d.h
contrib/babelfishpg_tsql/sql/babelfishpg_tsql--[0-9].[0-9].[0-9]--[0-9].[0-9].[0-9].sql
contrib/babelfishpg_tsql/sql/babelfishpg_tsql--[0-9].[0-9][0-9].[0-9]--[0-9].[0-9].[0-9].sql
contrib/babelfishpg_tsql/sql/babelfishpg_tsql--[0-9].[0-9].[0-9].sql
contrib/babelfishpg_tsql/src/backend_parser/gram-backend.c
contrib/babelfishpg_tsql/src/backend_parser/gram-backend.h
Expand Down
2 changes: 2 additions & 0 deletions contrib/babelfishpg_common/src/typecode.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ type_info_t type_infos[TOTAL_TYPECODE_COUNT] =
{0, 1, "rowversion", "timestamp", 8, 32, 3},
{0, 1, "timestamp", "timestamp", 8, 33, 3},
{0, 1, "vector", "vector", 9, 34, 3},
{0, 1, "sparsevec", "sparsevec", 9, 34, 3},
{0, 1, "halfvec", "halfvec", 9, 34, 3},
/*
* Geospatial types cannot be stored in SQL variant so setting sqlvariant header size to 1
*/
Expand Down
2 changes: 1 addition & 1 deletion contrib/babelfishpg_common/src/typecode.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
#define FIXEDDECIMAL_MULTIPLIER 10000LL
#endif

#define TOTAL_TYPECODE_COUNT 36
#define TOTAL_TYPECODE_COUNT 38

struct Node;

Expand Down
2 changes: 2 additions & 0 deletions contrib/babelfishpg_tds/src/backend/tds/tds_data_map.c
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,8 @@ TdsIoFunctionRawData TdsIoFunctionRawData_data[] =
{"pg_catalog", "oid", TDS_TYPE_INTEGER, 4, 1, TDS_SEND_INTEGER, TDS_RECV_INVALID},
{"pg_catalog", "sql_identifier", TDS_TYPE_VARCHAR, -1, 1, TDS_SEND_VARCHAR, TDS_RECV_INVALID},
{"sys", "vector", TDS_TYPE_VARCHAR, -1, 2, TDS_SEND_VARCHAR, TDS_RECV_VARCHAR},
{"sys", "halfvec", TDS_TYPE_VARCHAR, -1, 2, TDS_SEND_VARCHAR, TDS_RECV_VARCHAR},
{"sys", "sparsevec", TDS_TYPE_VARCHAR, -1, 2, TDS_SEND_VARCHAR, TDS_RECV_VARCHAR},
{"pg_catalog", "name", TDS_TYPE_VARCHAR, -1, 1, TDS_SEND_VARCHAR, TDS_RECV_INVALID},
{"pg_catalog", "character_data", TDS_TYPE_VARCHAR, -1, 2, TDS_SEND_VARCHAR, TDS_RECV_INVALID},
{"pg_catalog", "bool", TDS_TYPE_BIT, 1, 1, TDS_SEND_BIT, TDS_RECV_INVALID},
Expand Down
39 changes: 32 additions & 7 deletions contrib/babelfishpg_tds/src/backend/tds/tdsresponse.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ static TdsColumnMetaData *colMetaData = NULL;
static List *relMetaDataInfoList = NULL;

static Oid sys_vector_oid = InvalidOid;
static Oid sys_sparsevec_oid = InvalidOid;
static Oid sys_halfvec_oid = InvalidOid;
static Oid decimal_oid = InvalidOid;

static void FillTabNameWithNumParts(StringInfo buf, uint8 numParts, TdsRelationMetaDataInfo relMetaDataInfo);
Expand All @@ -138,7 +140,7 @@ static void ResetTdsEstateErrorData(void);
static void SetAttributesForColmetada(TdsColumnMetaData *col);
static int32 resolve_numeric_typmod_from_exp(Plan *plan, Node *expr);
static int32 resolve_numeric_typmod_outer_var(Plan *plan, AttrNumber attno);
static bool is_sys_vector_datatype(Oid oid);
static bool is_this_a_vector_datatype(Oid oid);

static inline void
SendPendingDone(bool more)
Expand Down Expand Up @@ -1106,8 +1108,8 @@ MakeEmptyParameterToken(char *name, int atttypid, int32 atttypmod, int attcollat
temp->maxLen = 0xFFFF;
break;
case TDS_SEND_VARCHAR:
/* If this is vector datatype, we should adjust the typmod */
if (is_sys_vector_datatype(col->pgTypeOid))
/* If this is one of the vector datatypes we should adjust the typmod. */
if (is_this_a_vector_datatype(col->pgTypeOid))
atttypmod = -1;
SetColMetadataForCharTypeHelper(col, TDS_TYPE_VARCHAR,
attcollation, (atttypmod == -1) ?
Expand Down Expand Up @@ -1868,8 +1870,8 @@ PrepareRowDescription(TupleDesc typeinfo, PlannedStmt *plannedstmt, List *target
att->attcollation, (atttypmod - 4) * 2);
break;
case TDS_SEND_VARCHAR:
/* If this is vector datatype, we should adjust the typmod */
if (is_sys_vector_datatype(col->pgTypeOid))
/* If this is one of the vector datatypes we should adjust the typmod. */
if (is_this_a_vector_datatype(col->pgTypeOid))
atttypmod = -1;

SetColMetadataForCharTypeHelper(col, TDS_TYPE_VARCHAR,
Expand Down Expand Up @@ -3560,9 +3562,10 @@ SetAttributesForColmetada(TdsColumnMetaData *col)
}

static bool
is_sys_vector_datatype(Oid oid)
is_this_a_vector_datatype(Oid oid)
{
Oid nspoid;

if (sys_vector_oid == InvalidOid)
{
nspoid = get_namespace_oid("sys", true);
Expand All @@ -3571,5 +3574,27 @@ is_sys_vector_datatype(Oid oid)

sys_vector_oid = GetSysCacheOid2(TYPENAMENSP, Anum_pg_type_oid, CStringGetDatum("vector"), ObjectIdGetDatum(nspoid));
}
return sys_vector_oid == oid;
if (sys_vector_oid == oid)
return true;

if (sys_halfvec_oid == InvalidOid)
{
nspoid = get_namespace_oid("sys", true);
if (nspoid == InvalidOid)
return false;

sys_halfvec_oid = GetSysCacheOid2(TYPENAMENSP, Anum_pg_type_oid, CStringGetDatum("halfvec"), ObjectIdGetDatum(nspoid));
}
if (sys_halfvec_oid == oid)
return true;

if (sys_sparsevec_oid == InvalidOid)
{
nspoid = get_namespace_oid("sys", true);
if (nspoid == InvalidOid)
return false;

sys_sparsevec_oid = GetSysCacheOid2(TYPENAMENSP, Anum_pg_type_oid, CStringGetDatum("sparsevec"), ObjectIdGetDatum(nspoid));
}
return sys_sparsevec_oid == oid;
}
1 change: 1 addition & 0 deletions contrib/babelfishpg_tsql/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ OBJS += src/table_variable_mvcc.o
OBJS += src/extendedproperty.o
OBJS += src/fts.o
OBJS += src/fts_parser.o
OBJS += src/pltsql_partition.o

export ANTLR4_JAVA_BIN=java
export ANTLR4_RUNTIME_LIB=-lantlr4-runtime
Expand Down
11 changes: 11 additions & 0 deletions contrib/babelfishpg_tsql/antlr/TSqlLexer.g4
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,10 @@ GROUPING_ID: G R O U P I N G UNDERLINE I D
GROUP_MAX_REQUESTS: G R O U P UNDERLINE M A X UNDERLINE R E Q U E S T S;
GUID: G U I D;
HADR: H A D R;
HALFVEC_COSINE_OPS: H A L F V E C UNDERLINE C O S I N E UNDERLINE O P S;
HALFVEC_IP_OPS: H A L F V E C UNDERLINE I P UNDERLINE O P S;
HALFVEC_L1_OPS: H A L F V E C UNDERLINE L '1' UNDERLINE O P S;
HALFVEC_L2_OPS: H A L F V E C UNDERLINE L '2' UNDERLINE O P S;
HASH: H A S H;
HASHED: H A S H E D;
HAVING: H A V I N G;
Expand Down Expand Up @@ -924,6 +928,10 @@ SOFTNUMA: S O F T N U M A;
SOME: S O M E;
SOURCE: S O U R C E;
SPARSE: S P A R S E;
SPARSEVEC_COSINE_OPS: S P A R S E V E C UNDERLINE C O S I N E UNDERLINE O P S;
SPARSEVEC_IP_OPS: S P A R S E V E C UNDERLINE I P UNDERLINE O P S;
SPARSEVEC_L1_OPS: S P A R S E V E C UNDERLINE L '1' UNDERLINE O P S;
SPARSEVEC_L2_OPS: S P A R S E V E C UNDERLINE L '2' UNDERLINE O P S;
SPATIAL: S P A T I A L;
SPATIAL_WINDOW_MAX_CELLS: S P A T I A L UNDERLINE W I N D O W UNDERLINE M A X UNDERLINE C E L L S;
SPECIFICATION: S P E C I F I C A T I O N;
Expand Down Expand Up @@ -1075,6 +1083,7 @@ VARP: V A R P;
VARYING: V A R Y I N G;
VECTOR_COSINE_OPS: V E C T O R UNDERLINE C O S I N E UNDERLINE O P S;
VECTOR_IP_OPS: V E C T O R UNDERLINE I P UNDERLINE O P S;
VECTOR_L1_OPS: V E C T O R UNDERLINE L '1' UNDERLINE O P S;
VECTOR_L2_OPS: V E C T O R UNDERLINE L '2' UNDERLINE O P S;
VERBOSELOGGING: V E R B O S E L O G G I N G;
VERSION: V E R S I O N;
Expand Down Expand Up @@ -1182,6 +1191,8 @@ OR_ASSIGN: '|=';
VECTOR_L2: '<->';
VECTOR_COSINE: '<=>';
VECTOR_IP: '<#>';
VECTOR_L1: '<+>';
VECTOR_CONCATENATE: '||';

DOT: '.';
UNDERLINE: '_';
Expand Down
23 changes: 21 additions & 2 deletions contrib/babelfishpg_tsql/antlr/TSqlParser.g4
Original file line number Diff line number Diff line change
Expand Up @@ -5215,7 +5215,22 @@ column_name_list_with_order

/* We introduce specific index methods so as to avoid PG syntax leaks. */
column_name_list_with_order_for_vector
: simple_column_name (ASC | DESC)? (VECTOR_COSINE_OPS | VECTOR_IP_OPS | VECTOR_L2_OPS)? (COMMA simple_column_name (ASC | DESC)? (VECTOR_COSINE_OPS | VECTOR_IP_OPS | VECTOR_L2_OPS)?)*
: simple_column_name (ASC | DESC)? vector_index_ops? (COMMA simple_column_name (ASC | DESC)? vector_index_ops?)*
;

vector_index_ops
: VECTOR_COSINE_OPS
| VECTOR_IP_OPS
| VECTOR_L1_OPS
| VECTOR_L2_OPS
| HALFVEC_COSINE_OPS
| HALFVEC_IP_OPS
| HALFVEC_L1_OPS
| HALFVEC_L2_OPS
| SPARSEVEC_COSINE_OPS
| SPARSEVEC_IP_OPS
| SPARSEVEC_L1_OPS
| SPARSEVEC_L2_OPS
;

//For some reason, sql server allows any number of prefixes: Here, h is the column: a.b.c.d.e.f.g.h
Expand Down Expand Up @@ -5262,7 +5277,11 @@ comparison_operator
;

vector_operator
: VECTOR_COSINE | VECTOR_IP | VECTOR_L2
: VECTOR_COSINE
| VECTOR_IP
| VECTOR_L2
| VECTOR_L1
| VECTOR_CONCATENATE
;

assignment_operator
Expand Down
Loading

0 comments on commit f52f570

Please sign in to comment.