diff --git a/src/backend/access/hash/hashvalidate.c b/src/backend/access/hash/hashvalidate.c
index 30b29cb..e7a28b0 100644
--- a/src/backend/access/hash/hashvalidate.c
+++ b/src/backend/access/hash/hashvalidate.c
@@ -292,7 +292,7 @@ check_hash_func_signature(Oid funcid, Oid restype, Oid argtype)
 		 */
 		if (funcid == F_HASHINT4 &&
 			(argtype == DATEOID ||
-			 argtype == ABSTIMEOID || argtype == RELTIMEOID ||
+			 argtype == ABSTIMEOID ||
 			 argtype == XIDOID || argtype == CIDOID))
 			 /* okay, allowed use of hashint4() */ ;
 		else if (funcid == F_TIMESTAMP_HASH &&
diff --git a/src/backend/po/de.po b/src/backend/po/de.po
index 30d589a..9a43c1f 100644
--- a/src/backend/po/de.po
+++ b/src/backend/po/de.po
@@ -20594,11 +20594,6 @@ msgstr "ungültiger Zeitzonenname: »%s«"
 msgid "cannot convert abstime \"invalid\" to timestamp"
 msgstr "kann »abstime«-Wert »invalid« nicht »timestamp« umwandeln"
 
-#: utils/adt/nabstime.c:852
-#, c-format
-msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "kann »reltime«-Wert »invalid« nicht in »interval« umwandeln"
-
 #: utils/adt/network.c:69
 #, c-format
 msgid "invalid cidr value: \"%s\""
diff --git a/src/backend/po/es.po b/src/backend/po/es.po
index 66be186..24b9f69 100644
--- a/src/backend/po/es.po
+++ b/src/backend/po/es.po
@@ -21160,11 +21160,6 @@ msgstr "nombre de huso horario no válido: «%s»"
 msgid "cannot convert abstime \"invalid\" to timestamp"
 msgstr "no se puede convertir el valor reservado de abstime «invalid» a timestamp"
 
-#: utils/adt/nabstime.c:852
-#, c-format
-msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "no se puede convertir el reltime «invalid» a interval"
-
 #: utils/adt/network.c:69
 #, c-format
 msgid "invalid cidr value: \"%s\""
diff --git a/src/backend/po/fr.po b/src/backend/po/fr.po
index 4763830..1a760ac 100644
--- a/src/backend/po/fr.po
+++ b/src/backend/po/fr.po
@@ -19564,11 +19564,6 @@ msgstr "nom du fuseau horaire invalide : « %s »"
 msgid "cannot convert abstime \"invalid\" to timestamp"
 msgstr "ne peut pas convertir un abstime « invalid » en timestamp"
 
-#: utils/adt/nabstime.c:855
-#, c-format
-msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "ne peut pas convertir reltime « invalid » en interval"
-
 #: utils/adt/network.c:69
 #, c-format
 msgid "invalid cidr value: \"%s\""
diff --git a/src/backend/po/id.po b/src/backend/po/id.po
index dfdbbc2..166576b 100644
--- a/src/backend/po/id.po
+++ b/src/backend/po/id.po
@@ -15760,11 +15760,6 @@ msgstr "nama zona waktu tidak valid: « %s »"
 msgid "cannot convert abstime \"invalid\" to timestamp"
 msgstr "tidak dapat mengkonversi abstime « invalid » ke timestamp"
 
-#: utils/adt/nabstime.c:881
-#, c-format
-msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "tidak dapat mengkonversi reltime « invalid » ke interval"
-
 #: utils/adt/network.c:118
 #, c-format
 msgid "invalid cidr value: \"%s\""
diff --git a/src/backend/po/it.po b/src/backend/po/it.po
index 21135e6..fd789db 100644
--- a/src/backend/po/it.po
+++ b/src/backend/po/it.po
@@ -20609,11 +20609,6 @@ msgstr "il nome del fuso orario \"%s\" non è valido"
 msgid "cannot convert abstime \"invalid\" to timestamp"
 msgstr "non è possibile convertire il valore abstime \"invalid\" in timestamp"
 
-#: utils/adt/nabstime.c:852
-#, c-format
-msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "non è possibile convertire il valore reltime \"invalid\" in interval"
-
 #: utils/adt/network.c:69
 #, c-format
 msgid "invalid cidr value: \"%s\""
diff --git a/src/backend/po/ja.po b/src/backend/po/ja.po
index 8bdb383..fc8b1e2 100644
--- a/src/backend/po/ja.po
+++ b/src/backend/po/ja.po
@@ -16505,11 +16505,6 @@ msgstr "時間帯名称が無効です: \"%s\""
 msgid "cannot convert abstime \"invalid\" to timestamp"
 msgstr "abstimeの\"invalid\"をtimestampに変換できません"
 
-#: utils/adt/nabstime.c:881
-#, c-format
-msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "reltimeの\"invalid\"をintervalに変換できません"
-
 #: utils/adt/network.c:118
 #, c-format
 msgid "invalid cidr value: \"%s\""
diff --git a/src/backend/po/ko.po b/src/backend/po/ko.po
index 9a4e045..2e908ee 100644
--- a/src/backend/po/ko.po
+++ b/src/backend/po/ko.po
@@ -20131,11 +20131,6 @@ msgstr "잘못된 타임존 이름: \"%s\""
 msgid "cannot convert abstime \"invalid\" to timestamp"
 msgstr "\"invalid\" abstime 자료형을 timestamp 자료형으로 변환할 수 없습니다."
 
-#: utils/adt/nabstime.c:855
-#, c-format
-msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "reltime \"invalid\"를 interval로 변환할 수 없음"
-
 #: utils/adt/network.c:69
 #, c-format
 msgid "invalid cidr value: \"%s\""
diff --git a/src/backend/po/pl.po b/src/backend/po/pl.po
index 2162abf..3e77e68 100644
--- a/src/backend/po/pl.po
+++ b/src/backend/po/pl.po
@@ -21418,11 +21418,6 @@ msgstr "nieprawidłowa nazwa strefy czasowej: \"%s\""
 msgid "cannot convert abstime \"invalid\" to timestamp"
 msgstr "nie można przekształcić abstime \"invalid\" do znacznika czasu"
 
-#: utils/adt/nabstime.c:852
-#, c-format
-msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "nie można przekształcić reltime \"invalid\" do interwału"
-
 #: utils/adt/network.c:69
 #, c-format
 msgid "invalid cidr value: \"%s\""
diff --git a/src/backend/po/pt_BR.po b/src/backend/po/pt_BR.po
index b3ae6fc..3b3c1ee 100644
--- a/src/backend/po/pt_BR.po
+++ b/src/backend/po/pt_BR.po
@@ -17283,11 +17283,6 @@ msgstr "nome de zona horária é inválido: \"%s\""
 msgid "cannot convert abstime \"invalid\" to timestamp"
 msgstr "não pode converter abstime \"invalid\" para timestamp"
 
-#: utils/adt/nabstime.c:855
-#, c-format
-msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "não pode converter reltime \"invalid\" em interval"
-
 #: utils/adt/network.c:69
 #, c-format
 msgid "invalid cidr value: \"%s\""
diff --git a/src/backend/po/ru.po b/src/backend/po/ru.po
index ca435ee..c11fb05 100644
--- a/src/backend/po/ru.po
+++ b/src/backend/po/ru.po
@@ -22472,11 +22472,6 @@ msgstr "неверное название часового пояса: \"%s\""
 msgid "cannot convert abstime \"invalid\" to timestamp"
 msgstr "преобразовать значение \"invalid\" типа abstime в timestamp нельзя"
 
-#: utils/adt/nabstime.c:852
-#, c-format
-msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "преобразовать значение \"invalid\" типа reltime в interval нельзя"
-
 #: utils/adt/network.c:69
 #, c-format
 msgid "invalid cidr value: \"%s\""
diff --git a/src/backend/po/zh_CN.po b/src/backend/po/zh_CN.po
index c5cc4b2..fdf033e 100644
--- a/src/backend/po/zh_CN.po
+++ b/src/backend/po/zh_CN.po
@@ -20229,11 +20229,6 @@ msgstr "无效时区名字: \"%s\""
 msgid "cannot convert abstime \"invalid\" to timestamp"
 msgstr "无法把 abstime \"invalid\" 转换为 timestamp."
 
-#: utils/adt/nabstime.c:855
-#, c-format
-msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "无法把 reltime \"invalid\" 转换为 interval"
-
 #: utils/adt/network.c:69
 #, c-format
 msgid "invalid cidr value: \"%s\""
diff --git a/src/backend/utils/adt/nabstime.c b/src/backend/utils/adt/nabstime.c
index c6fa81e..c048010 100644
--- a/src/backend/utils/adt/nabstime.c
+++ b/src/backend/utils/adt/nabstime.c
@@ -2,7 +2,6 @@
  *
  * nabstime.c
  *	  Utilities for the built-in type "AbsoluteTime".
- *	  Functions for the built-in type "RelativeTime".
  *
  * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
@@ -37,8 +36,6 @@
  * for these 4-byte types.
  */
 
-#define IsSpace(C)				((C) == ' ')
-
 #define ABSTIMEMIN(t1, t2) \
 	(DatumGetBool(DirectFunctionCall2(abstimele, \
 				  AbsoluteTimeGetDatum(t1), \
@@ -54,7 +51,6 @@
  */
 
 static AbsoluteTime tm2abstime(struct pg_tm *tm, int tz);
-static void reltime2tm(RelativeTime time, struct pg_tm *tm);
 
 /*
  * GetCurrentAbsoluteTime()
@@ -554,239 +550,10 @@ abstime_timestamptz(PG_FUNCTION_ARGS)
 	PG_RETURN_TIMESTAMP(result);
 }
 
-
-/*****************************************************************************
- *	 USER I/O ROUTINES														 *
- *****************************************************************************/
-
-/*
- *		reltimein		- converts a reltime string in an internal format
- */
-Datum
-reltimein(PG_FUNCTION_ARGS)
-{
-	char	   *str = PG_GETARG_CSTRING(0);
-	RelativeTime result;
-	struct pg_tm tt,
-			   *tm = &tt;
-	fsec_t		fsec;
-	int			dtype;
-	int			dterr;
-	char	   *field[MAXDATEFIELDS];
-	int			nf,
-				ftype[MAXDATEFIELDS];
-	char		workbuf[MAXDATELEN + 1];
-
-	dterr = ParseDateTime(str, workbuf, sizeof(workbuf),
-						  field, ftype, MAXDATEFIELDS, &nf);
-	if (dterr == 0)
-		dterr = DecodeInterval(field, ftype, nf, INTERVAL_FULL_RANGE,
-							   &dtype, tm, &fsec);
-
-	/* if those functions think it's a bad format, try ISO8601 style */
-	if (dterr == DTERR_BAD_FORMAT)
-		dterr = DecodeISO8601Interval(str,
-									  &dtype, tm, &fsec);
-
-	if (dterr != 0)
-	{
-		if (dterr == DTERR_FIELD_OVERFLOW)
-			dterr = DTERR_INTERVAL_OVERFLOW;
-		DateTimeParseError(dterr, str, "reltime");
-	}
-
-	switch (dtype)
-	{
-		case DTK_DELTA:
-			result = ((tm->tm_hour * MINS_PER_HOUR + tm->tm_min) * SECS_PER_MINUTE) + tm->tm_sec;
-			result += tm->tm_year * SECS_PER_YEAR + ((tm->tm_mon * DAYS_PER_MONTH) + tm->tm_mday) * SECS_PER_DAY;
-			break;
-
-		default:
-			elog(ERROR, "unexpected dtype %d while parsing reltime \"%s\"",
-				 dtype, str);
-			result = INVALID_RELTIME;
-			break;
-	}
-
-	PG_RETURN_RELATIVETIME(result);
-}
-
-/*
- *		reltimeout		- converts the internal format to a reltime string
- */
-Datum
-reltimeout(PG_FUNCTION_ARGS)
-{
-	RelativeTime time = PG_GETARG_RELATIVETIME(0);
-	char	   *result;
-	struct pg_tm tt,
-			   *tm = &tt;
-	char		buf[MAXDATELEN + 1];
-
-	reltime2tm(time, tm);
-	EncodeInterval(tm, 0, IntervalStyle, buf);
-
-	result = pstrdup(buf);
-	PG_RETURN_CSTRING(result);
-}
-
-/*
- *		reltimerecv			- converts external binary format to reltime
- */
-Datum
-reltimerecv(PG_FUNCTION_ARGS)
-{
-	StringInfo	buf = (StringInfo) PG_GETARG_POINTER(0);
-
-	PG_RETURN_RELATIVETIME((RelativeTime) pq_getmsgint(buf, sizeof(RelativeTime)));
-}
-
-/*
- *		reltimesend			- converts reltime to binary format
- */
-Datum
-reltimesend(PG_FUNCTION_ARGS)
-{
-	RelativeTime time = PG_GETARG_RELATIVETIME(0);
-	StringInfoData buf;
-
-	pq_begintypsend(&buf);
-	pq_sendint(&buf, time, sizeof(time));
-	PG_RETURN_BYTEA_P(pq_endtypsend(&buf));
-}
-
-
-static void
-reltime2tm(RelativeTime time, struct pg_tm *tm)
-{
-	double		dtime = time;
-
-	FMODULO(dtime, tm->tm_year, 31557600);
-	FMODULO(dtime, tm->tm_mon, 2592000);
-	FMODULO(dtime, tm->tm_mday, SECS_PER_DAY);
-	FMODULO(dtime, tm->tm_hour, SECS_PER_HOUR);
-	FMODULO(dtime, tm->tm_min, SECS_PER_MINUTE);
-	FMODULO(dtime, tm->tm_sec, 1);
-}
-
-
 /*****************************************************************************
  *	 PUBLIC ROUTINES														 *
  *****************************************************************************/
 
-Datum
-interval_reltime(PG_FUNCTION_ARGS)
-{
-	Interval   *interval = PG_GETARG_INTERVAL_P(0);
-	RelativeTime time;
-	int			year,
-				month,
-				day;
-	TimeOffset	span;
-
-	year = interval->month / MONTHS_PER_YEAR;
-	month = interval->month % MONTHS_PER_YEAR;
-	day = interval->day;
-
-	span = ((INT64CONST(365250000) * year + INT64CONST(30000000) * month +
-			 INT64CONST(1000000) * day) * INT64CONST(86400)) +
-		interval->time;
-	span /= USECS_PER_SEC;
-
-	if (span < INT_MIN || span > INT_MAX)
-		time = INVALID_RELTIME;
-	else
-		time = span;
-
-	PG_RETURN_RELATIVETIME(time);
-}
-
-
-Datum
-reltime_interval(PG_FUNCTION_ARGS)
-{
-	RelativeTime reltime = PG_GETARG_RELATIVETIME(0);
-	Interval   *result;
-	int			year,
-				month,
-				day;
-
-	result = (Interval *) palloc(sizeof(Interval));
-
-	switch (reltime)
-	{
-		case INVALID_RELTIME:
-			ereport(ERROR,
-					(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-					 errmsg("cannot convert reltime \"invalid\" to interval")));
-			result->time = 0;
-			result->day = 0;
-			result->month = 0;
-			break;
-
-		default:
-			year = reltime / SECS_PER_YEAR;
-			reltime -= year * SECS_PER_YEAR;
-			month = reltime / (DAYS_PER_MONTH * SECS_PER_DAY);
-			reltime -= month * (DAYS_PER_MONTH * SECS_PER_DAY);
-			day = reltime / SECS_PER_DAY;
-			reltime -= day * SECS_PER_DAY;
-
-			result->time = (reltime * USECS_PER_SEC);
-			result->month = MONTHS_PER_YEAR * year + month;
-			result->day = day;
-			break;
-	}
-
-	PG_RETURN_INTERVAL_P(result);
-}
-
-
-/*
- *		timepl, timemi and abstimemi use the formula
- *				abstime + reltime = abstime
- *		so		abstime - reltime = abstime
- *		and		abstime - abstime = reltime
- */
-
-/*
- *		timepl			- returns the value of (abstime t1 + reltime t2)
- */
-Datum
-timepl(PG_FUNCTION_ARGS)
-{
-	AbsoluteTime t1 = PG_GETARG_ABSOLUTETIME(0);
-	RelativeTime t2 = PG_GETARG_RELATIVETIME(1);
-
-	if (AbsoluteTimeIsReal(t1) &&
-		RelativeTimeIsValid(t2) &&
-		((t2 > 0 && t1 < NOEND_ABSTIME - t2) ||
-		 (t2 <= 0 && t1 > NOSTART_ABSTIME - t2)))	/* prevent overflow */
-		PG_RETURN_ABSOLUTETIME(t1 + t2);
-
-	PG_RETURN_ABSOLUTETIME(INVALID_ABSTIME);
-}
-
-
-/*
- *		timemi			- returns the value of (abstime t1 - reltime t2)
- */
-Datum
-timemi(PG_FUNCTION_ARGS)
-{
-	AbsoluteTime t1 = PG_GETARG_ABSOLUTETIME(0);
-	RelativeTime t2 = PG_GETARG_RELATIVETIME(1);
-
-	if (AbsoluteTimeIsReal(t1) &&
-		RelativeTimeIsValid(t2) &&
-		((t2 > 0 && t1 > NOSTART_ABSTIME + t2) ||
-		 (t2 <= 0 && t1 < NOEND_ABSTIME + t2))) /* prevent overflow */
-		PG_RETURN_ABSOLUTETIME(t1 - t2);
-
-	PG_RETURN_ABSOLUTETIME(INVALID_ABSTIME);
-}
-
 
 /*
  *		timenow			- returns  time "now", internal format
@@ -799,99 +566,6 @@ timenow(PG_FUNCTION_ARGS)
 	PG_RETURN_ABSOLUTETIME(GetCurrentAbsoluteTime());
 }
 
-/*
- * reltime comparison routines
- */
-static int
-reltime_cmp_internal(RelativeTime a, RelativeTime b)
-{
-	/*
-	 * We consider all INVALIDs to be equal and larger than any non-INVALID.
-	 * This is somewhat arbitrary; the important thing is to have a consistent
-	 * sort order.
-	 */
-	if (a == INVALID_RELTIME)
-	{
-		if (b == INVALID_RELTIME)
-			return 0;			/* INVALID = INVALID */
-		else
-			return 1;			/* INVALID > non-INVALID */
-	}
-
-	if (b == INVALID_RELTIME)
-		return -1;				/* non-INVALID < INVALID */
-
-	if (a > b)
-		return 1;
-	else if (a == b)
-		return 0;
-	else
-		return -1;
-}
-
-Datum
-reltimeeq(PG_FUNCTION_ARGS)
-{
-	RelativeTime t1 = PG_GETARG_RELATIVETIME(0);
-	RelativeTime t2 = PG_GETARG_RELATIVETIME(1);
-
-	PG_RETURN_BOOL(reltime_cmp_internal(t1, t2) == 0);
-}
-
-Datum
-reltimene(PG_FUNCTION_ARGS)
-{
-	RelativeTime t1 = PG_GETARG_RELATIVETIME(0);
-	RelativeTime t2 = PG_GETARG_RELATIVETIME(1);
-
-	PG_RETURN_BOOL(reltime_cmp_internal(t1, t2) != 0);
-}
-
-Datum
-reltimelt(PG_FUNCTION_ARGS)
-{
-	RelativeTime t1 = PG_GETARG_RELATIVETIME(0);
-	RelativeTime t2 = PG_GETARG_RELATIVETIME(1);
-
-	PG_RETURN_BOOL(reltime_cmp_internal(t1, t2) < 0);
-}
-
-Datum
-reltimegt(PG_FUNCTION_ARGS)
-{
-	RelativeTime t1 = PG_GETARG_RELATIVETIME(0);
-	RelativeTime t2 = PG_GETARG_RELATIVETIME(1);
-
-	PG_RETURN_BOOL(reltime_cmp_internal(t1, t2) > 0);
-}
-
-Datum
-reltimele(PG_FUNCTION_ARGS)
-{
-	RelativeTime t1 = PG_GETARG_RELATIVETIME(0);
-	RelativeTime t2 = PG_GETARG_RELATIVETIME(1);
-
-	PG_RETURN_BOOL(reltime_cmp_internal(t1, t2) <= 0);
-}
-
-Datum
-reltimege(PG_FUNCTION_ARGS)
-{
-	RelativeTime t1 = PG_GETARG_RELATIVETIME(0);
-	RelativeTime t2 = PG_GETARG_RELATIVETIME(1);
-
-	PG_RETURN_BOOL(reltime_cmp_internal(t1, t2) >= 0);
-}
-
-Datum
-btreltimecmp(PG_FUNCTION_ARGS)
-{
-	RelativeTime t1 = PG_GETARG_RELATIVETIME(0);
-	RelativeTime t2 = PG_GETARG_RELATIVETIME(1);
-
-	PG_RETURN_INT32(reltime_cmp_internal(t1, t2));
-}
-
 /*****************************************************************************
  *
  *****************************************************************************/
diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index b28f428..ec53a9a 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -3945,7 +3945,6 @@ convert_to_scalar(Datum value, Oid valuetypid, double *scaledvalue,
 		case ABSTIMEOID:
 		case DATEOID:
 		case INTERVALOID:
-		case RELTIMEOID:
 		case TIMEOID:
 		case TIMETZOID:
 			*scaledvalue = convert_timevalue_to_scalar(value, valuetypid);
@@ -4376,8 +4375,6 @@ convert_timevalue_to_scalar(Datum value, Oid typid)
 				return interval->time + interval->day * (double) USECS_PER_DAY +
 					interval->month * ((DAYS_PER_YEAR / (double) MONTHS_PER_YEAR) * USECS_PER_DAY);
 			}
-		case RELTIMEOID:
-			return (DatumGetRelativeTime(value) * 1000000.0);
 		case TIMEOID:
 			return DatumGetTimeADT(value);
 		case TIMETZOID:
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index 6fc2f08..74a3706 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -463,16 +463,6 @@ DATA(insert (	2099   790 790 4 s	905 403 0 ));
 DATA(insert (	2099   790 790 5 s	903 403 0 ));
 
 /*
- *	btree reltime_ops
- */
-
-DATA(insert (	2233   703 703 1 s	568 403 0 ));
-DATA(insert (	2233   703 703 2 s	570 403 0 ));
-DATA(insert (	2233   703 703 3 s	566 403 0 ));
-DATA(insert (	2233   703 703 4 s	571 403 0 ));
-DATA(insert (	2233   703 703 5 s	569 403 0 ));
-
-/*
  *	btree array_ops
  */
 
@@ -581,8 +571,6 @@ DATA(insert (	2225   28 28 1 s	352 405 0 ));
 DATA(insert (	2226   29 29 1 s	385 405 0 ));
 /* abstime_ops */
 DATA(insert (	2227   702 702 1 s	560 405 0 ));
-/* reltime_ops */
-DATA(insert (	2228   703 703 1 s	566 405 0 ));
 /* text_pattern_ops */
 DATA(insert (	2229   25 25 1 s	98	405 0 ));
 /* bpchar_pattern_ops */
@@ -989,12 +977,6 @@ DATA(insert (	4072	702  702 2 s	   564	  3580 0 ));
 DATA(insert (	4072	702  702 3 s	   560	  3580 0 ));
 DATA(insert (	4072	702  702 4 s	   565	  3580 0 ));
 DATA(insert (	4072	702  702 5 s	   563	  3580 0 ));
-/* minmax reltime */
-DATA(insert (	4073	703  703 1 s	   568	  3580 0 ));
-DATA(insert (	4073	703  703 2 s	   570	  3580 0 ));
-DATA(insert (	4073	703  703 3 s	   566	  3580 0 ));
-DATA(insert (	4073	703  703 4 s	   571	  3580 0 ));
-DATA(insert (	4073	703  703 5 s	   569	  3580 0 ));
 /* minmax macaddr */
 DATA(insert (	4074	829  829 1 s	  1222	  3580 0 ));
 DATA(insert (	4074	829  829 2 s	  1223	  3580 0 ));
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index cca4d63..35558aa 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -135,7 +135,6 @@ DATA(insert (	2095   25 25 2 3332 ));
 DATA(insert (	2097   1042 1042 1 2180 ));
 DATA(insert (	2097   1042 1042 2 3333 ));
 DATA(insert (	2099   790 790 1  377 ));
-DATA(insert (	2233   703 703 1  380 ));
 DATA(insert (	2789   27 27 1 2794 ));
 DATA(insert (	2968   2950 2950 1 2960 ));
 DATA(insert (	2968   2950 2950 2 3300 ));
@@ -177,7 +176,6 @@ DATA(insert (	2223   17 17 1 456 ));
 DATA(insert (	2225   28 28 1 450 ));
 DATA(insert (	2226   29 29 1 450 ));
 DATA(insert (	2227   702 702 1 450 ));
-DATA(insert (	2228   703 703 1 450 ));
 DATA(insert (	2229   25 25 1 400 ));
 DATA(insert (	2231   1042 1042 1 1080 ));
 DATA(insert (	2235   1033 1033 1 329 ));
@@ -406,11 +404,6 @@ DATA(insert (	4072   702	 702  1  3383 ));
 DATA(insert (	4072   702	 702  2  3384 ));
 DATA(insert (	4072   702	 702  3  3385 ));
 DATA(insert (	4072   702	 702  4  3386 ));
-/* minmax reltime */
-DATA(insert (	4073   703	 703  1  3383 ));
-DATA(insert (	4073   703	 703  2  3384 ));
-DATA(insert (	4073   703	 703  3  3385 ));
-DATA(insert (	4073   703	 703  4  3386 ));
 /* minmax macaddr */
 DATA(insert (	4074   829	 829  1  3383 ));
 DATA(insert (	4074   829	 829  2  3384 ));
diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h
index 1782753..0a3b3af 100644
--- a/src/include/catalog/pg_cast.h
+++ b/src/include/catalog/pg_cast.h
@@ -269,7 +269,6 @@ DATA(insert (  702 1082 1179 a f ));
 DATA(insert (  702 1083 1364 a f ));
 DATA(insert (  702 1114 2023 i f ));
 DATA(insert (  702 1184 1173 i f ));
-DATA(insert (  703 1186 1177 i f ));
 DATA(insert ( 1082 1114 2024 i f ));
 DATA(insert ( 1082 1184 1174 i f ));
 DATA(insert ( 1083 1186 1370 i f ));
@@ -283,14 +282,11 @@ DATA(insert ( 1184 1082 1178 a f ));
 DATA(insert ( 1184 1083 2019 a f ));
 DATA(insert ( 1184 1114 2027 a f ));
 DATA(insert ( 1184 1266 1388 a f ));
-DATA(insert ( 1186	703 1194 a f ));
 DATA(insert ( 1186 1083 1419 a f ));
 DATA(insert ( 1266 1083 2046 a f ));
-/* Cross-category casts between int4 and abstime, reltime */
+/* Cross-category casts between int4 and abstime */
 DATA(insert (	23	702    0 e b ));
 DATA(insert (  702	 23    0 e b ));
-DATA(insert (	23	703    0 e b ));
-DATA(insert (  703	 23    0 e b ));
 
 /*
  * Geometric category
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 8212304..504ddf2 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -174,11 +174,9 @@ DATA(insert (	403		tid_ops				PGNSP PGUID 2789   27 t 0 ));
 DATA(insert (	405		xid_ops				PGNSP PGUID 2225   28 t 0 ));
 DATA(insert (	405		cid_ops				PGNSP PGUID 2226   29 t 0 ));
 DATA(insert (	405		abstime_ops			PGNSP PGUID 2227  702 t 0 ));
-DATA(insert (	405		reltime_ops			PGNSP PGUID 2228  703 t 0 ));
 DATA(insert (	405		text_pattern_ops	PGNSP PGUID 2229   25 f 0 ));
 DATA(insert (	405		varchar_pattern_ops PGNSP PGUID 2229   25 f 0 ));
 DATA(insert (	405		bpchar_pattern_ops	PGNSP PGUID 2231 1042 f 0 ));
-DATA(insert (	403		reltime_ops			PGNSP PGUID 2233  703 t 0 ));
 DATA(insert (	405		aclitem_ops			PGNSP PGUID 2235 1033 t 0 ));
 DATA(insert (	783		box_ops				PGNSP PGUID 2593  603 t 0 ));
 DATA(insert (	783		point_ops			PGNSP PGUID 1029  600 t 603 ));
@@ -223,7 +221,6 @@ DATA(insert (	3580	tid_minmax_ops			PGNSP PGUID 4069	27 t 27 ));
 DATA(insert (	3580	float4_minmax_ops		PGNSP PGUID 4070   700 t 700 ));
 DATA(insert (	3580	float8_minmax_ops		PGNSP PGUID 4070   701 t 701 ));
 DATA(insert (	3580	abstime_minmax_ops		PGNSP PGUID 4072   702 t 702 ));
-DATA(insert (	3580	reltime_minmax_ops		PGNSP PGUID 4073   703 t 703 ));
 DATA(insert (	3580	macaddr_minmax_ops		PGNSP PGUID 4074   829 t 829 ));
 DATA(insert (	3580	macaddr8_minmax_ops		PGNSP PGUID 4109   774 t 774 ));
 DATA(insert (	3580	inet_minmax_ops			PGNSP PGUID 4075   869 f 869 ));
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index d79f5f2..8157ef3 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -361,22 +361,6 @@ DATA(insert OID = 564 (  "<="	   PGNSP PGUID b f f 702 702	16 565 563 abstimele
 DESCR("less than or equal");
 DATA(insert OID = 565 (  ">="	   PGNSP PGUID b f f 702 702	16 564 562 abstimege scalargtsel scalargtjoinsel ));
 DESCR("greater than or equal");
-DATA(insert OID = 566 (  "="	   PGNSP PGUID b t t 703 703	16 566 567 reltimeeq eqsel eqjoinsel ));
-DESCR("equal");
-DATA(insert OID = 567 (  "<>"	   PGNSP PGUID b f f 703 703	16 567 566 reltimene neqsel neqjoinsel ));
-DESCR("not equal");
-DATA(insert OID = 568 (  "<"	   PGNSP PGUID b f f 703 703	16 569 571 reltimelt scalarltsel scalarltjoinsel ));
-DESCR("less than");
-DATA(insert OID = 569 (  ">"	   PGNSP PGUID b f f 703 703	16 568 570 reltimegt scalargtsel scalargtjoinsel ));
-DESCR("greater than");
-DATA(insert OID = 570 (  "<="	   PGNSP PGUID b f f 703 703	16 571 569 reltimele scalarltsel scalarltjoinsel ));
-DESCR("less than or equal");
-DATA(insert OID = 571 (  ">="	   PGNSP PGUID b f f 703 703	16 570 568 reltimege scalargtsel scalargtjoinsel ));
-DESCR("greater than or equal");
-DATA(insert OID = 581 (  "+"	   PGNSP PGUID b f f 702 703 702	 0	 0 timepl - - ));
-DESCR("add");
-DATA(insert OID = 582 (  "-"	   PGNSP PGUID b f f 702 703 702	 0	 0 timemi - - ));
-DESCR("subtract");
 DATA(insert OID = 584 (  "-"	   PGNSP PGUID l f f	 0 700 700	 0	 0 float4um - - ));
 DESCR("negate");
 DATA(insert OID = 585 (  "-"	   PGNSP PGUID l f f	 0 701 701	 0	 0 float8um - - ));
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index b13590a..d0ab051 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -123,10 +123,8 @@ DATA(insert OID = 2789 (	403		tid_ops			PGNSP PGUID ));
 DATA(insert OID = 2225 (	405		xid_ops			PGNSP PGUID ));
 DATA(insert OID = 2226 (	405		cid_ops			PGNSP PGUID ));
 DATA(insert OID = 2227 (	405		abstime_ops		PGNSP PGUID ));
-DATA(insert OID = 2228 (	405		reltime_ops		PGNSP PGUID ));
 DATA(insert OID = 2229 (	405		text_pattern_ops	PGNSP PGUID ));
 DATA(insert OID = 2231 (	405		bpchar_pattern_ops	PGNSP PGUID ));
-DATA(insert OID = 2233 (	403		reltime_ops		PGNSP PGUID ));
 DATA(insert OID = 2235 (	405		aclitem_ops		PGNSP PGUID ));
 DATA(insert OID = 2593 (	783		box_ops			PGNSP PGUID ));
 DATA(insert OID = 2594 (	783		poly_ops		PGNSP PGUID ));
@@ -170,7 +168,6 @@ DATA(insert OID = 4068 (	3580	oid_minmax_ops			PGNSP PGUID ));
 DATA(insert OID = 4069 (	3580	tid_minmax_ops			PGNSP PGUID ));
 DATA(insert OID = 4070 (	3580	float_minmax_ops		PGNSP PGUID ));
 DATA(insert OID = 4072 (	3580	abstime_minmax_ops		PGNSP PGUID ));
-DATA(insert OID = 4073 (	3580	reltime_minmax_ops		PGNSP PGUID ));
 DATA(insert OID = 4074 (	3580	macaddr_minmax_ops		PGNSP PGUID ));
 DATA(insert OID = 4109 (	3580	macaddr8_minmax_ops		PGNSP PGUID ));
 DATA(insert OID = 4075 (	3580	network_minmax_ops		PGNSP PGUID ));
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index c002766..5e902e7 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -444,12 +444,6 @@ DATA(insert OID = 240 (  abstimein		   PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1
 DESCR("I/O");
 DATA(insert OID = 241 (  abstimeout		   PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "702" _null_ _null_ _null_ _null_ _null_ abstimeout _null_ _null_ _null_ ));
 DESCR("I/O");
-DATA(insert OID = 242 (  reltimein		   PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 703 "2275" _null_ _null_ _null_ _null_ _null_ reltimein _null_ _null_ _null_ ));
-DESCR("I/O");
-DATA(insert OID = 243 (  reltimeout		   PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "703" _null_ _null_ _null_ _null_ _null_ reltimeout _null_ _null_ _null_ ));
-DESCR("I/O");
-DATA(insert OID = 244 (  timepl			   PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 702 "702 703" _null_ _null_ _null_ _null_ _null_	timepl _null_ _null_ _null_ ));
-DATA(insert OID = 245 (  timemi			   PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 702 "702 703" _null_ _null_ _null_ _null_ _null_	timemi _null_ _null_ _null_ ));
 DATA(insert OID = 250 (  timenow		   PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 702 "" _null_ _null_ _null_ _null_ _null_ timenow _null_ _null_ _null_ ));
 DESCR("current date and time (abstime)");
 DATA(insert OID = 251 (  abstimeeq		   PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimeeq _null_ _null_ _null_ ));
@@ -458,12 +452,6 @@ DATA(insert OID = 253 (  abstimelt		   PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2
 DATA(insert OID = 254 (  abstimegt		   PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimegt _null_ _null_ _null_ ));
 DATA(insert OID = 255 (  abstimele		   PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimele _null_ _null_ _null_ ));
 DATA(insert OID = 256 (  abstimege		   PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimege _null_ _null_ _null_ ));
-DATA(insert OID = 257 (  reltimeeq		   PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimeeq _null_ _null_ _null_ ));
-DATA(insert OID = 258 (  reltimene		   PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimene _null_ _null_ _null_ ));
-DATA(insert OID = 259 (  reltimelt		   PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimelt _null_ _null_ _null_ ));
-DATA(insert OID = 260 (  reltimegt		   PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimegt _null_ _null_ _null_ ));
-DATA(insert OID = 261 (  reltimele		   PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimele _null_ _null_ _null_ ));
-DATA(insert OID = 262 (  reltimege		   PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimege _null_ _null_ _null_ ));
 DATA(insert OID = 274 (  timeofday		   PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 25 "" _null_ _null_ _null_ _null_ _null_ timeofday _null_ _null_ _null_ ));
 DESCR("current date and time - increments during transactions");
 DATA(insert OID = 275 (  isfinite		   PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "702" _null_ _null_ _null_ _null_ _null_ abstime_finite _null_ _null_ _null_ ));
@@ -613,8 +601,6 @@ DATA(insert OID = 3255 ( bttextsortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i
 DESCR("sort support");
 DATA(insert OID = 377 (  cash_cmp		   PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "790 790" _null_ _null_ _null_ _null_ _null_ cash_cmp _null_ _null_ _null_ ));
 DESCR("less-equal-greater");
-DATA(insert OID = 380 (  btreltimecmp	   PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "703 703" _null_ _null_ _null_ _null_ _null_ btreltimecmp _null_ _null_ _null_ ));
-DESCR("less-equal-greater");
 DATA(insert OID = 382 (  btarraycmp		   PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "2277 2277" _null_ _null_ _null_ _null_ _null_ btarraycmp _null_ _null_ _null_ ));
 DESCR("less-equal-greater");
 
@@ -1227,8 +1213,6 @@ DATA(insert OID = 1295 (  justify_days	   PGNSP PGUID 12 1 0 0 0 f f f f t f i s
 DESCR("promote groups of 30 days to numbers of months");
 DATA(insert OID = 1176 (  timestamptz	   PGNSP PGUID 14 1 0 0 0 f f f f t f s s 2 0 1184 "1082 1083" _null_ _null_ _null_ _null_ _null_ "select cast(($1 + $2) as timestamp with time zone)" _null_ _null_ _null_ ));
 DESCR("convert date and time to timestamp with time zone");
-DATA(insert OID = 1177 (  interval		   PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1186 "703" _null_ _null_ _null_ _null_ _null_ reltime_interval _null_ _null_ _null_ ));
-DESCR("convert reltime to interval");
 DATA(insert OID = 1178 (  date			   PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1082 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_date _null_ _null_ _null_ ));
 DESCR("convert timestamp with time zone to date");
 DATA(insert OID = 1179 (  date			   PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1082 "702" _null_ _null_ _null_ _null_ _null_ abstime_date _null_ _null_ _null_ ));
@@ -1243,8 +1227,6 @@ DESCR("age of a multi-transaction ID, in multi-transactions before current multi
 DATA(insert OID = 1188 (  timestamptz_mi   PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_mi _null_ _null_ _null_ ));
 DATA(insert OID = 1189 (  timestamptz_pl_interval PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 1184 "1184 1186" _null_ _null_ _null_ _null_ _null_ timestamptz_pl_interval _null_ _null_ _null_ ));
 DATA(insert OID = 1190 (  timestamptz_mi_interval PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 1184 "1184 1186" _null_ _null_ _null_ _null_ _null_ timestamptz_mi_interval _null_ _null_ _null_ ));
-DATA(insert OID = 1194 (  reltime			PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 703 "1186" _null_ _null_ _null_ _null_ _null_ interval_reltime _null_ _null_ _null_ ));
-DESCR("convert interval to reltime");
 DATA(insert OID = 1195 (  timestamptz_smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1184 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_smaller _null_ _null_ _null_ ));
 DESCR("smaller of two");
 DATA(insert OID = 1196 (  timestamptz_larger  PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1184 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_larger _null_ _null_ _null_ ));
@@ -1493,8 +1475,6 @@ DESCR("character length");
 
 DATA(insert OID = 1382 (  date_part    PGNSP PGUID 14 1 0 0 0 f f f f t f s s 2 0 701 "25 702" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as timestamp with time zone))" _null_ _null_ _null_ ));
 DESCR("extract field from abstime");
-DATA(insert OID = 1383 (  date_part    PGNSP PGUID 14 1 0 0 0 f f f f t f s s 2 0 701 "25 703" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as pg_catalog.interval))" _null_ _null_ _null_ ));
-DESCR("extract field from reltime");
 DATA(insert OID = 1384 (  date_part    PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 701 "25 1082" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as timestamp without time zone))" _null_ _null_ _null_ ));
 DESCR("extract field from date");
 DATA(insert OID = 1385 (  date_part    PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "25 1083" _null_ _null_ _null_ _null_  _null_ time_part _null_ _null_ _null_ ));
@@ -4006,10 +3986,6 @@ DATA(insert OID = 2462 (  abstimerecv		   PGNSP PGUID 12 1 0 0 0 f f f f t f i s
 DESCR("I/O");
 DATA(insert OID = 2463 (  abstimesend		   PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "702" _null_ _null_ _null_ _null_ _null_ abstimesend _null_ _null_ _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2464 (  reltimerecv		   PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 703 "2281" _null_ _null_ _null_ _null_ _null_ reltimerecv _null_ _null_ _null_ ));
-DESCR("I/O");
-DATA(insert OID = 2465 (  reltimesend		   PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "703" _null_ _null_ _null_ _null_ _null_ reltimesend _null_ _null_ _null_ ));
-DESCR("I/O");
 DATA(insert OID = 2468 (  date_recv			   PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1082 "2281" _null_ _null_ _null_ _null_ _null_ date_recv _null_ _null_ _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2469 (  date_send			   PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "1082" _null_ _null_ _null_ _null_ _null_	date_send _null_ _null_ _null_ ));
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index aab23cb..d54b453 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -420,9 +420,6 @@ DESCR("double-precision floating point number, 8-byte storage");
 DATA(insert OID = 702 (  abstime   PGNSP PGUID	4 t b D f t \054 0	 0 1023 abstimein abstimeout abstimerecv abstimesend - - - i p f 0 -1 0 0 _null_ _null_ _null_ ));
 DESCR("absolute, limited-range date and time (Unix system time)");
 #define ABSTIMEOID		702
-DATA(insert OID = 703 (  reltime   PGNSP PGUID	4 t b T f t \054 0	 0 1024 reltimein reltimeout reltimerecv reltimesend - - - i p f 0 -1 0 0 _null_ _null_ _null_ ));
-DESCR("relative, limited-range time interval (Unix delta time)");
-#define RELTIMEOID		703
 DATA(insert OID = 705 (  unknown   PGNSP PGUID -2 f p X f t \054 0	 0 0 unknownin unknownout unknownrecv unknownsend - - - c p f 0 -1 0 0 _null_ _null_ _null_ ));
 DESCR("");
 #define UNKNOWNOID		705
@@ -482,7 +479,6 @@ DATA(insert OID = 1021 (  _float4	 PGNSP PGUID -1 f b A f t \054 0 700 0 array_i
 #define FLOAT4ARRAYOID 1021
 DATA(insert OID = 1022 (  _float8	 PGNSP PGUID -1 f b A f t \054 0 701 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ ));
 DATA(insert OID = 1023 (  _abstime	 PGNSP PGUID -1 f b A f t \054 0 702 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ ));
-DATA(insert OID = 1024 (  _reltime	 PGNSP PGUID -1 f b A f t \054 0 703 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ ));
 DATA(insert OID = 1027 (  _polygon	 PGNSP PGUID -1 f b A f t \054 0 604 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ ));
 DATA(insert OID = 1033 (  aclitem	 PGNSP PGUID 12 f b U f t \054 0 0 1034 aclitemin aclitemout - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ ));
 DESCR("access control list");
diff --git a/src/include/utils/datetime.h b/src/include/utils/datetime.h
index 7968569..c426677 100644
--- a/src/include/utils/datetime.h
+++ b/src/include/utils/datetime.h
@@ -3,7 +3,7 @@
  * datetime.h
  *	  Definitions for date/time support code.
  *	  The support code is shared with other date data types,
- *	   including abstime, reltime, date, and time.
+ *	   including abstime, date, and time.
  *
  *
  * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
diff --git a/src/include/utils/nabstime.h b/src/include/utils/nabstime.h
index 3f54ff4..4bd4c2b 100644
--- a/src/include/utils/nabstime.h
+++ b/src/include/utils/nabstime.h
@@ -34,22 +34,14 @@
  * interval.
  */
 typedef int32 AbsoluteTime;
-typedef int32 RelativeTime;
 
 /*
  * Macros for fmgr-callable functions.
  */
 #define DatumGetAbsoluteTime(X)  ((AbsoluteTime) DatumGetInt32(X))
-#define DatumGetRelativeTime(X)  ((RelativeTime) DatumGetInt32(X))
-
 #define AbsoluteTimeGetDatum(X)  Int32GetDatum(X)
-#define RelativeTimeGetDatum(X)  Int32GetDatum(X)
-
 #define PG_GETARG_ABSOLUTETIME(n)  DatumGetAbsoluteTime(PG_GETARG_DATUM(n))
-#define PG_GETARG_RELATIVETIME(n)  DatumGetRelativeTime(PG_GETARG_DATUM(n))
-
 #define PG_RETURN_ABSOLUTETIME(x)  return AbsoluteTimeGetDatum(x)
-#define PG_RETURN_RELATIVETIME(x)  return RelativeTimeGetDatum(x)
 
 /*
  * Reserved values
@@ -65,8 +57,6 @@ typedef int32 RelativeTime;
 #define NOEND_ABSTIME	((AbsoluteTime) 0x7FFFFFFC) /* 2147483645 (2^31 - 3) */
 #define NOSTART_ABSTIME ((AbsoluteTime) INT_MIN)	/* -2147483648 */
 
-#define INVALID_RELTIME ((RelativeTime) 0x7FFFFFFE) /* 2147483647 (2^31 - 1) */
-
 #define AbsoluteTimeIsValid(time) \
 	((bool) ((time) != INVALID_ABSTIME))
 
@@ -80,10 +70,6 @@ typedef int32 RelativeTime;
 	((bool) (((AbsoluteTime) (time)) < NOEND_ABSTIME && \
 			  ((AbsoluteTime) (time)) != NOSTART_ABSTIME))
 
-#define RelativeTimeIsValid(time) \
-	((bool) (((RelativeTime) (time)) != INVALID_RELTIME))
-
-
 /* non-fmgr-callable support routines */
 extern AbsoluteTime GetCurrentAbsoluteTime(void);
 extern void abstime2tm(AbsoluteTime time, int *tzp, struct pg_tm *tm, char **tzn);
diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c
index 7e24687..cb81322 100644
--- a/src/interfaces/ecpg/ecpglib/execute.c
+++ b/src/interfaces/ecpg/ecpglib/execute.c
@@ -225,8 +225,6 @@ ecpg_is_type_an_array(int type, const struct statement *stmt, const struct varia
 			return (ECPG_ARRAY_ERROR);
 		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), ABSTIMEOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return (ECPG_ARRAY_ERROR);
-		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), RELTIMEOID, ECPG_ARRAY_NONE, stmt->lineno))
-			return (ECPG_ARRAY_ERROR);
 		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), UNKNOWNOID, ECPG_ARRAY_NONE, stmt->lineno))
 			return (ECPG_ARRAY_ERROR);
 		if (!ecpg_type_infocache_push(&(stmt->connection->cache_head), CIRCLEOID, ECPG_ARRAY_NONE, stmt->lineno))
diff --git a/src/interfaces/ecpg/ecpglib/pg_type.h b/src/interfaces/ecpg/ecpglib/pg_type.h
index e6d4843..24d71c6 100644
--- a/src/interfaces/ecpg/ecpglib/pg_type.h
+++ b/src/interfaces/ecpg/ecpglib/pg_type.h
@@ -39,7 +39,6 @@
 #define FLOAT4OID 700
 #define FLOAT8OID 701
 #define ABSTIMEOID		702
-#define RELTIMEOID		703
 #define UNKNOWNOID		705
 #define CIRCLEOID		718
 #define CASHOID 790
diff --git a/src/test/regress/expected/abstime.out b/src/test/regress/expected/abstime.out
index 91614da..26899c0 100644
--- a/src/test/regress/expected/abstime.out
+++ b/src/test/regress/expected/abstime.out
@@ -1,7 +1,6 @@
 --
 -- ABSTIME
 -- testing built-in time type abstime
--- uses reltime
 --
 --
 -- timezones may vary based not only on location but the operating
diff --git a/src/test/regress/expected/horology.out b/src/test/regress/expected/horology.out
index f9d12e0..16eafe3 100644
--- a/src/test/regress/expected/horology.out
+++ b/src/test/regress/expected/horology.out
@@ -2047,70 +2047,6 @@ SELECT '' AS "226", d1.f1 AS timestamp1, d2.f1 AS timestamp2, d1.f1 - d2.f1 AS d
 (256 rows)
 
 --
--- abstime, reltime arithmetic
---
-SELECT '' AS ten, ABSTIME_TBL.f1 AS abstime, RELTIME_TBL.f1 AS reltime
-    FROM ABSTIME_TBL, RELTIME_TBL
-   WHERE (ABSTIME_TBL.f1 + RELTIME_TBL.f1) < abstime 'Jan 14 14:00:00 1971'
-   ORDER BY abstime, reltime;
- ten |           abstime            |    reltime    
------+------------------------------+---------------
-     | Sat May 10 23:59:12 1947 PST | @ 14 secs ago
-     | Sat May 10 23:59:12 1947 PST | @ 1 min
-     | Sat May 10 23:59:12 1947 PST | @ 5 hours
-     | Sat May 10 23:59:12 1947 PST | @ 10 days
-     | Sat May 10 23:59:12 1947 PST | @ 3 mons
-     | Wed Dec 31 16:00:00 1969 PST | @ 14 secs ago
-     | Wed Dec 31 16:00:00 1969 PST | @ 1 min
-     | Wed Dec 31 16:00:00 1969 PST | @ 5 hours
-     | Wed Dec 31 16:00:00 1969 PST | @ 10 days
-     | Wed Dec 31 16:00:00 1969 PST | @ 3 mons
-(10 rows)
-
--- these four queries should return the same answer
--- the "infinity" and "-infinity" tuples in ABSTIME_TBL cannot be added and
--- therefore, should not show up in the results.
-SELECT '' AS three, * FROM ABSTIME_TBL
-  WHERE  (ABSTIME_TBL.f1 + reltime '@ 3 year')         -- +3 years
-    < abstime 'Jan 14 14:00:00 1977';
- three |              f1              
--------+------------------------------
-       | Sun Jan 14 03:14:21 1973 PST
-       | Wed Dec 31 16:00:00 1969 PST
-       | Sat May 10 23:59:12 1947 PST
-(3 rows)
-
-SELECT '' AS three, * FROM ABSTIME_TBL
-   WHERE  (ABSTIME_TBL.f1 + reltime '@ 3 year ago')    -- -3 years
-     < abstime 'Jan 14 14:00:00 1971';
- three |              f1              
--------+------------------------------
-       | Sun Jan 14 03:14:21 1973 PST
-       | Wed Dec 31 16:00:00 1969 PST
-       | Sat May 10 23:59:12 1947 PST
-(3 rows)
-
-SELECT '' AS three, * FROM ABSTIME_TBL
-   WHERE  (ABSTIME_TBL.f1 - reltime '@ 3 year')        -- -(+3) years
-    < abstime 'Jan 14 14:00:00 1971';
- three |              f1              
--------+------------------------------
-       | Sun Jan 14 03:14:21 1973 PST
-       | Wed Dec 31 16:00:00 1969 PST
-       | Sat May 10 23:59:12 1947 PST
-(3 rows)
-
-SELECT '' AS three, * FROM ABSTIME_TBL
-   WHERE  (ABSTIME_TBL.f1 - reltime '@ 3 year ago')    -- -(-3) years
-     < abstime 'Jan 14 14:00:00 1977';
- three |              f1              
--------+------------------------------
-       | Sun Jan 14 03:14:21 1973 PST
-       | Wed Dec 31 16:00:00 1969 PST
-       | Sat May 10 23:59:12 1947 PST
-(3 rows)
-
---
 -- Conversions
 --
 SELECT '' AS "16", f1 AS "timestamp", date(f1) AS date
@@ -2183,34 +2119,6 @@ SELECT '' AS two, d1 AS "timestamp", abstime(d1) AS abstime
 SELECT '' AS three, f1 as abstime, cast(f1 as timestamp) AS "timestamp"
   FROM ABSTIME_TBL WHERE NOT isfinite(f1);
 ERROR:  cannot convert abstime "invalid" to timestamp
-SELECT '' AS ten, f1 AS interval, reltime(f1) AS reltime
-  FROM INTERVAL_TBL;
- ten |           interval            |            reltime            
------+-------------------------------+-------------------------------
-     | @ 1 min                       | @ 1 min
-     | @ 5 hours                     | @ 5 hours
-     | @ 10 days                     | @ 10 days
-     | @ 34 years                    | @ 34 years
-     | @ 3 mons                      | @ 3 mons
-     | @ 14 secs ago                 | @ 14 secs ago
-     | @ 1 day 2 hours 3 mins 4 secs | @ 1 day 2 hours 3 mins 4 secs
-     | @ 6 years                     | @ 6 years
-     | @ 5 mons                      | @ 5 mons
-     | @ 5 mons 12 hours             | @ 5 mons 12 hours
-(10 rows)
-
-SELECT '' AS six, f1 as reltime, CAST(f1 AS interval) AS interval
-  FROM RELTIME_TBL;
- six |    reltime    |   interval    
------+---------------+---------------
-     | @ 1 min       | @ 1 min
-     | @ 5 hours     | @ 5 hours
-     | @ 10 days     | @ 10 days
-     | @ 34 years    | @ 34 years
-     | @ 3 mons      | @ 3 mons
-     | @ 14 secs ago | @ 14 secs ago
-(6 rows)
-
 DROP TABLE TEMP_TIMESTAMP;
 --
 -- Formats
diff --git a/src/test/regress/expected/opr_sanity.out b/src/test/regress/expected/opr_sanity.out
index 56a4b26..d5a738b 100644
--- a/src/test/regress/expected/opr_sanity.out
+++ b/src/test/regress/expected/opr_sanity.out
@@ -526,12 +526,6 @@ abstimelt(abstime,abstime)
 abstimegt(abstime,abstime)
 abstimele(abstime,abstime)
 abstimege(abstime,abstime)
-reltimeeq(reltime,reltime)
-reltimene(reltime,reltime)
-reltimelt(reltime,reltime)
-reltimegt(reltime,reltime)
-reltimele(reltime,reltime)
-reltimege(reltime,reltime)
 float4eq(real,real)
 float4ne(real,real)
 float4lt(real,real)
diff --git a/src/test/regress/expected/reltime.out b/src/test/regress/expected/reltime.out
deleted file mode 100644
index 14fdc6a..0000000
--- a/src/test/regress/expected/reltime.out
+++ /dev/null
@@ -1,109 +0,0 @@
---
--- RELTIME
---
-CREATE TABLE RELTIME_TBL (f1 reltime);
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 1 minute');
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 5 hour');
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 10 day');
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 34 year');
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 3 months');
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 14 seconds ago');
--- badly formatted reltimes
-INSERT INTO RELTIME_TBL (f1) VALUES ('badly formatted reltime');
-ERROR:  invalid input syntax for type reltime: "badly formatted reltime"
-LINE 1: INSERT INTO RELTIME_TBL (f1) VALUES ('badly formatted reltim...
-                                             ^
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 30 eons ago');
-ERROR:  invalid input syntax for type reltime: "@ 30 eons ago"
-LINE 1: INSERT INTO RELTIME_TBL (f1) VALUES ('@ 30 eons ago');
-                                             ^
--- test reltime operators
-SELECT '' AS six, * FROM RELTIME_TBL;
- six |      f1       
------+---------------
-     | @ 1 min
-     | @ 5 hours
-     | @ 10 days
-     | @ 34 years
-     | @ 3 mons
-     | @ 14 secs ago
-(6 rows)
-
-SELECT '' AS five, * FROM RELTIME_TBL
-   WHERE RELTIME_TBL.f1 <> reltime '@ 10 days';
- five |      f1       
-------+---------------
-      | @ 1 min
-      | @ 5 hours
-      | @ 34 years
-      | @ 3 mons
-      | @ 14 secs ago
-(5 rows)
-
-SELECT '' AS three, * FROM RELTIME_TBL
-   WHERE RELTIME_TBL.f1 <= reltime '@ 5 hours';
- three |      f1       
--------+---------------
-       | @ 1 min
-       | @ 5 hours
-       | @ 14 secs ago
-(3 rows)
-
-SELECT '' AS three, * FROM RELTIME_TBL
-   WHERE RELTIME_TBL.f1 < reltime '@ 1 day';
- three |      f1       
--------+---------------
-       | @ 1 min
-       | @ 5 hours
-       | @ 14 secs ago
-(3 rows)
-
-SELECT '' AS one, * FROM RELTIME_TBL
-   WHERE RELTIME_TBL.f1 = reltime '@ 34 years';
- one |     f1     
------+------------
-     | @ 34 years
-(1 row)
-
-SELECT '' AS two, * FROM RELTIME_TBL
-   WHERE RELTIME_TBL.f1 >= reltime '@ 1 month';
- two |     f1     
------+------------
-     | @ 34 years
-     | @ 3 mons
-(2 rows)
-
-SELECT '' AS five, * FROM RELTIME_TBL
-   WHERE RELTIME_TBL.f1 > reltime '@ 3 seconds ago';
- five |     f1     
-------+------------
-      | @ 1 min
-      | @ 5 hours
-      | @ 10 days
-      | @ 34 years
-      | @ 3 mons
-(5 rows)
-
-SELECT '' AS fifteen, r1.*, r2.*
-   FROM RELTIME_TBL r1, RELTIME_TBL r2
-   WHERE r1.f1 > r2.f1
-   ORDER BY r1.f1, r2.f1;
- fifteen |     f1     |      f1       
----------+------------+---------------
-         | @ 1 min    | @ 14 secs ago
-         | @ 5 hours  | @ 14 secs ago
-         | @ 5 hours  | @ 1 min
-         | @ 10 days  | @ 14 secs ago
-         | @ 10 days  | @ 1 min
-         | @ 10 days  | @ 5 hours
-         | @ 3 mons   | @ 14 secs ago
-         | @ 3 mons   | @ 1 min
-         | @ 3 mons   | @ 5 hours
-         | @ 3 mons   | @ 10 days
-         | @ 34 years | @ 14 secs ago
-         | @ 34 years | @ 1 min
-         | @ 34 years | @ 5 hours
-         | @ 34 years | @ 10 days
-         | @ 34 years | @ 3 mons
-(15 rows)
-
diff --git a/src/test/regress/expected/sanity_check.out b/src/test/regress/expected/sanity_check.out
index 7840c4c..6cc8104 100644
--- a/src/test/regress/expected/sanity_check.out
+++ b/src/test/regress/expected/sanity_check.out
@@ -165,7 +165,6 @@ quad_point_tbl|t
 radix_text_tbl|t
 ramp|f
 real_city|f
-reltime_tbl|f
 road|t
 shighway|t
 slow_emp4000|f
diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule
index c5f9ffe..ff7d875 100644
--- a/src/test/regress/parallel_schedule
+++ b/src/test/regress/parallel_schedule
@@ -23,12 +23,12 @@ test: numerology
 # ----------
 # The second group of parallel tests
 # ----------
-test: point lseg line box path polygon circle date time timetz timestamp timestamptz interval abstime reltime inet macaddr macaddr8 tstypes
+test: point lseg line box path polygon circle date time timetz timestamp timestamptz interval abstime inet macaddr macaddr8 tstypes
 
 # ----------
 # Another group of parallel tests
 # geometry depends on point, lseg, box, path, polygon and circle
-# horology depends on interval, timetz, timestamp, timestamptz, reltime and abstime
+# horology depends on interval, timetz, timestamp, timestamptz, and abstime
 # ----------
 test: geometry horology regex oidjoins type_sanity opr_sanity misc_sanity comments expressions
 
diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule
index 83ba380..1cf10e9 100644
--- a/src/test/regress/serial_schedule
+++ b/src/test/regress/serial_schedule
@@ -37,7 +37,6 @@ test: timestamp
 test: timestamptz
 test: interval
 test: abstime
-test: reltime
 test: inet
 test: macaddr
 test: macaddr8
diff --git a/src/test/regress/sql/abstime.sql b/src/test/regress/sql/abstime.sql
index 650d7fd..bcb4cd8 100644
--- a/src/test/regress/sql/abstime.sql
+++ b/src/test/regress/sql/abstime.sql
@@ -1,7 +1,6 @@
 --
 -- ABSTIME
 -- testing built-in time type abstime
--- uses reltime
 --
 
 --
diff --git a/src/test/regress/sql/horology.sql b/src/test/regress/sql/horology.sql
index a7bc9dc..1cf02d3 100644
--- a/src/test/regress/sql/horology.sql
+++ b/src/test/regress/sql/horology.sql
@@ -268,35 +268,6 @@ SELECT '' AS "226", d1.f1 AS timestamp1, d2.f1 AS timestamp2, d1.f1 - d2.f1 AS d
   ORDER BY timestamp1, timestamp2, difference;
 
 --
--- abstime, reltime arithmetic
---
-
-SELECT '' AS ten, ABSTIME_TBL.f1 AS abstime, RELTIME_TBL.f1 AS reltime
-    FROM ABSTIME_TBL, RELTIME_TBL
-   WHERE (ABSTIME_TBL.f1 + RELTIME_TBL.f1) < abstime 'Jan 14 14:00:00 1971'
-   ORDER BY abstime, reltime;
-
--- these four queries should return the same answer
--- the "infinity" and "-infinity" tuples in ABSTIME_TBL cannot be added and
--- therefore, should not show up in the results.
-
-SELECT '' AS three, * FROM ABSTIME_TBL
-  WHERE  (ABSTIME_TBL.f1 + reltime '@ 3 year')         -- +3 years
-    < abstime 'Jan 14 14:00:00 1977';
-
-SELECT '' AS three, * FROM ABSTIME_TBL
-   WHERE  (ABSTIME_TBL.f1 + reltime '@ 3 year ago')    -- -3 years
-     < abstime 'Jan 14 14:00:00 1971';
-
-SELECT '' AS three, * FROM ABSTIME_TBL
-   WHERE  (ABSTIME_TBL.f1 - reltime '@ 3 year')        -- -(+3) years
-    < abstime 'Jan 14 14:00:00 1971';
-
-SELECT '' AS three, * FROM ABSTIME_TBL
-   WHERE  (ABSTIME_TBL.f1 - reltime '@ 3 year ago')    -- -(-3) years
-     < abstime 'Jan 14 14:00:00 1977';
-
---
 -- Conversions
 --
 
@@ -320,12 +291,6 @@ SELECT '' AS two, d1 AS "timestamp", abstime(d1) AS abstime
 SELECT '' AS three, f1 as abstime, cast(f1 as timestamp) AS "timestamp"
   FROM ABSTIME_TBL WHERE NOT isfinite(f1);
 
-SELECT '' AS ten, f1 AS interval, reltime(f1) AS reltime
-  FROM INTERVAL_TBL;
-
-SELECT '' AS six, f1 as reltime, CAST(f1 AS interval) AS interval
-  FROM RELTIME_TBL;
-
 DROP TABLE TEMP_TIMESTAMP;
 
 --
diff --git a/src/test/regress/sql/reltime.sql b/src/test/regress/sql/reltime.sql
deleted file mode 100644
index a07b64e..0000000
--- a/src/test/regress/sql/reltime.sql
+++ /dev/null
@@ -1,50 +0,0 @@
---
--- RELTIME
---
-
-CREATE TABLE RELTIME_TBL (f1 reltime);
-
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 1 minute');
-
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 5 hour');
-
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 10 day');
-
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 34 year');
-
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 3 months');
-
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 14 seconds ago');
-
-
--- badly formatted reltimes
-INSERT INTO RELTIME_TBL (f1) VALUES ('badly formatted reltime');
-
-INSERT INTO RELTIME_TBL (f1) VALUES ('@ 30 eons ago');
-
--- test reltime operators
-
-SELECT '' AS six, * FROM RELTIME_TBL;
-
-SELECT '' AS five, * FROM RELTIME_TBL
-   WHERE RELTIME_TBL.f1 <> reltime '@ 10 days';
-
-SELECT '' AS three, * FROM RELTIME_TBL
-   WHERE RELTIME_TBL.f1 <= reltime '@ 5 hours';
-
-SELECT '' AS three, * FROM RELTIME_TBL
-   WHERE RELTIME_TBL.f1 < reltime '@ 1 day';
-
-SELECT '' AS one, * FROM RELTIME_TBL
-   WHERE RELTIME_TBL.f1 = reltime '@ 34 years';
-
-SELECT '' AS two, * FROM RELTIME_TBL
-   WHERE RELTIME_TBL.f1 >= reltime '@ 1 month';
-
-SELECT '' AS five, * FROM RELTIME_TBL
-   WHERE RELTIME_TBL.f1 > reltime '@ 3 seconds ago';
-
-SELECT '' AS fifteen, r1.*, r2.*
-   FROM RELTIME_TBL r1, RELTIME_TBL r2
-   WHERE r1.f1 > r2.f1
-   ORDER BY r1.f1, r2.f1;
diff --git a/src/tools/pgindent/typedefs.list b/src/tools/pgindent/typedefs.list
index cd26dc2..1163ee5 100644
--- a/src/tools/pgindent/typedefs.list
+++ b/src/tools/pgindent/typedefs.list
@@ -1830,7 +1830,6 @@ Relation
 RelationData
 RelationPtr
 RelationSyncEntry
-RelativeTime
 RelcacheCallbackFunction
 RelfilenodeMapEntry
 RelfilenodeMapKey
